Recent Releases of scipy

scipy - SciPy 1.16.1

SciPy 1.16.1 Release Notes

SciPy 1.16.1 is a bug-fix release that adds support for Python 3.14.0rc1, including PyPI wheels.

Authors

  • Name (commits)
  • Evgeni Burovski (1)
  • Rob Falck (1)
  • Ralf Gommers (7)
  • Geoffrey Gunter (1) +
  • Matt Haberland (2)
  • Joren Hammudoglu (1)
  • Andrew Nelson (2)
  • newyork_loki (1) +
  • Ilhan Polat (1)
  • Tyler Reddy (25)
  • Daniel Schmitz (1)
  • Dan Schult (2)

A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

The full issue and pull request lists, and the release asset hashes are available in the associated README.txt file.

- Python
Published by tylerjereddy 10 months ago

scipy - SciPy 1.16.0

SciPy 1.16.0 Release Notes

SciPy 1.16.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.16.x branch, and on adding new features on the main branch.

This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.

Highlights of this release

  • Improved experimental support for the Python array API standard, including new support in scipy.signal, and additional support in scipy.stats and scipy.special. Improved support for JAX and Dask backends has been added, with notable support in scipy.cluster.hierarchy, many functions in scipy.special, and many of the trimmed statistics functions.
  • scipy.optimize now uses the new Python implementation from the PRIMA package for COBYLA. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation with a better performance on average.
  • scipy.sparse.coo_array now supports n-D arrays with reshaping, arithmetic and reduction operations like sum/mean/min/max. No n-D indexing or scipy.sparse.random_array support yet.
  • Updated guide and tools for migration from sparse matrices to sparse arrays.
  • Nearly all functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch.
  • Two new scipy.signal functions, scipy.signal.firwin_2d and scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and scipy.signal.ShortTimeFFT dual window calculation, respectively.
  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space.
  • A new function scipy.ndimage.vectorized_filter for generic filters that take advantage of a vectorized Python callable was added.

New features

scipy.io improvements

  • scipy.io.savemat now provides informative warnings for invalid field names.
  • scipy.io.mmread now provides a clearer error message when provided with a source file path that does not exist.
  • scipy.io.wavfile.read can now read non-seekable files.

scipy.integrate improvements

  • The error estimate of scipy.integrate.tanhsinh was improved.

scipy.interpolate improvements

  • Batch support was added to scipy.interpolate.make_smoothing_spline.

scipy.linalg improvements

  • Nearly all functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch. See linalg_batch for details.
  • scipy.linalg.sqrtm is rewritten in C and its performance is improved. It also tries harder to return real-valued results for real-valued inputs if possible. See the function docstring for more details. In this version the input argument disp and the optional output argument errest are deprecated and will be removed four versions later. Similarly, after changing the underlying algorithm to recursion, the blocksize keyword argument has no effect and will be removed two versions later.
  • Wrappers for ?stevd, ?langb, ?sytri, ?hetri and ?gbcon were added to scipy.linalg.lapack.
  • The default driver of scipy.linalg.eigh_tridiagonal was improved.
  • scipy.linalg.solve can now estimate the reciprocal condition number and the matrix norm calculation is more efficient.

scipy.ndimage improvements

  • A new function scipy.ndimage.vectorized_filter for generic filters that take advantage of a vectorized Python callable was added.
  • scipy.ndimage.rotate has improved performance, especially on ARM platforms.

scipy.optimize improvements

  • COBYLA was updated to use the new Python implementation from the PRIMApackage. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average but it depends on the problem and for some problems it can result in more function evaluations or a less optimal result. For those cases the user can try modifying the initial and final trust region radii given by rhobeg and tol respectively. A larger rhobeg can help the algorithm take bigger steps initially, while a smaller tol can help it continue and find a better solution. For more information, see the PRIMA documentation.
  • Several of the scipy.optimize.minimize methods, and the scipy.optimize.least_squares function, have been given a workers keyword. This allows parallelization of some calculations via a map-like callable, such as multiprocessing.Pool. These parallelization opportunities typically occur during numerical differentiation. This can greatly speed up minimization when the objective function is expensive to calculate.
  • The lm method of scipy.optimize.least_squares can now accept 3-point and cs for the jac keyword.
  • The SLSQP Fortran 77 code was ported to C. When this method is used now the constraint multipliers are exposed to the user through the multiplier keyword of the returned scipy.optimize.OptimizeResult object.
  • NNLS code has been corrected and rewritten in C to address the performance regression introduced in 1.15.x
  • scipy.optimize.root now warns for invalid inner parameters when using the newton_krylov method
  • The return value of minimization with method='L-BFGS-B' now has a faster hess_inv.todense() implementation. Time complexity has improved from cubic to quadratic.
  • scipy.optimize.least_squares has a new callback argument that is applicable to the trf and dogbox methods. callback may be used to track optimization results at each step or to provide custom conditions for stopping.

scipy.signal improvements

  • A new function scipy.signal.firwin_2d for the creation of a 2-D FIR Filter using the 1-D window method was added.
  • scipy.signal.cspline1d_eval and scipy.signal.qspline1d_eval now provide an informative error on empty input rather than hitting the recursion limit.
  • A new function scipy.signal.closest_STFT_dual_window to calculate the scipy.signal.ShortTimeFFT dual window of a given window closest to a desired dual window.
  • A new classmethod scipy.signal.ShortTimeFFT.from_win_equals_dual to create a scipy.signal.ShortTimeFFT instance where the window and its dual are equal up to a scaling factor. It allows to create short-time Fourier transforms which are unitary mappings.
  • The performance of scipy.signal.convolve2d was improved.

scipy.sparse improvements

  • scipy.sparse.coo_array now supports n-D arrays using binary and reduction operations.
  • Faster operations between two DIA arrays/matrices for: add, sub, multiply, matmul.
  • scipy.sparse.csgraph.dijkstra shortest_path is more efficient.
  • scipy.sparse.csgraph.yen has performance improvements.
  • Support for lazy loading of sparse.csgraph and sparse.linalg was added.

scipy.spatial improvements

  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space, its application to vectors and transform composition. It follows the same design approach as scipy.spatial.transform.Rotation.
  • scipy.spatial.transform.Rotation now has an appropriate __repr__ method, and improved performance for its scipy.spatial.transform.Rotation.apply method.

scipy.stats improvements

  • A new function scipy.stats.quantile, an array API compatible function for quantile estimation, was added.
  • scipy.stats.make_distribution was extended to work with existing discrete distributions and to facilitate the creation of custom distributions in the new random variable infrastructure.
  • A new distribution, scipy.stats.Binomial, was added.
  • An equal_var keyword was added to scipy.stats.tukey_hsd (enables the Games-Howell test) and scipy.stats.f_oneway (enables Welch ANOVA).
  • The moment calculation for scipy.stats.gennorm was improved.
  • The scipy.stats.mode implementation was vectorized, for faster batch calculation.
  • Support for axis, nan_policy, and keepdims keywords was added to scipy.stats.power_divergence, scipy.stats.chisquare, scipy.stats.pointbiserialr, scipy.stats.kendalltau, scipy.stats.weightedtau, scipy.stats.theilslopes, scipy.stats.siegelslopes, scipy.stats.boxcox_llf, and scipy.stats.linregress.
  • Support for keepdims and nan_policy keywords was added to scipy.stats.gstd.
  • The performance of scipy.stats.special_ortho_group and scipy.stats.pearsonr was improved.
  • Support for an rng keyword argument was added to the logcdf and cdf methods of multivariate_normal_gen and multivariate_normal_frozen.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to multiple submodules in recent versions of SciPy. Please consider testing these features by setting the environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, CuPy or Dask arrays as array arguments.

Many functions in scipy.stats, scipy.special, scipy.optimize, and scipy.constants now provide tables documenting compatible array and device types as well as support for lazy arrays and JIT compilation. New features with support and old features with support added for SciPy 1.16.0 include:

  • Most of the scipy.signal functionality
  • scipy.ndimage.vectorized_filter
  • scipy.special.stdtrit
  • scipy.special.softmax
  • scipy.special.log_softmax
  • scipy.stats.quantile
  • scipy.stats.gstd
  • scipy.stats.rankdata

Features with extended array API support (generally, improved support for JAX and Dask) in SciPy 1.16.0 include:

  • many of the scipy.cluster.hierarchy functions
  • many functions in scipy.special
  • many of the trimmed statistics functions in scipy.stats

SciPy now has a CI job that exercises GPU (CUDA) support, and as a result using PyTorch, CuPy or JAX arrays on GPU with SciPy is now more reliable.

Deprecated features

  • The unused atol argument of scipy.optimize.nnls is deprecated and will be removed in SciPy 1.18.0.
  • The disp argument of scipy.linalg.signm, scipy.linalg.logm, and scipy.linalg.sqrtm will be removed in SciPy 1.18.0.
  • scipy.stats.multinomial now emits a FutureWarning if the rows of p do not sum to 1.0. This condition will produce NaNs beginning in SciPy 1.18.0.
  • The disp and iprint arguments of the l-bfgs-b solver of scipy.optimize have been deprecated, and will be removed in SciPy 1.18.0.

Expired Deprecations

  • scipy.sparse.conjtransp has been removed. Use .T.conj() instead.
  • The quadrature='trapz' option has been removed from scipy.integrate.quad_vec, and scipy.stats.trapz has been removed. Use trapezoid in both instances instead.
  • scipy.special.comb and scipy.special.perm now raise when exact=True and arguments are non-integral.
  • Support for inference of the two sets of measurements from the single argument x has been removed from scipy.stats.linregress. The data must be specified separately as x and y.
  • Support for NumPy masked arrays has been removed from scipy.stats.power_divergence and scipy.stats.chisquare.
  • A significant number of functions from non-public namespaces (e.g., scipy.sparse.base, scipy.interpolate.dfitpack) were cleaned up. They were previously already emitting deprecation warnings.

Backwards incompatible changes

  • Several of the scipy.linalg functions for solving a linear system (e.g. scipy.linalg.solve) documented that the RHS argument must be either 1-D or 2-D but did not always raise an error when the RHS argument had more the two dimensions. Now, many-dimensional right hand sides are treated according to the rules specified in linalg_batch.
  • scipy.stats.bootstrap now explicitly broadcasts elements of data to the same shape (ignoring axis) before performing the calculation.
  • Several submodule names are no longer available via from scipy.signal import *, but may still be imported directly, as detailed at https://github.com/scipy/scipy-stubs/pull/549.

Build and packaging related changes

  • The minimum supported version of Clang was bumped from 12.0 to 15.0.
  • The lowest supported macOS version for wheels on PyPI is now 10.14 instead of 10.13.
  • The sdist contents were optimized, resulting in a size reduction of about 50%, from 60 MB to 30 MB.
  • For Cython>=3.1.0, SciPy now uses the new cython --generate-shared functionality, which reduces the total size of SciPy's wheels and on-disk installations significantly.
  • SciPy no longer contains an internal shared library that requires RPATH support, after sf_error_state was removed from scipy.special.
  • A new build option -Duse-system-libraries has been added. It allows opting in to using system libraries instead of using vendored sources. Currently Boost.Math and Qhull are supported as system build dependencies.

Other changes

  • A new accompanying release of scipy-stubs (v1.16.0.0) is available at https://github.com/scipy/scipy-stubs/releases/tag/v1.16.0.0
  • The internal dependency of scipy._lib on scipy.sparse was removed, which reduces the import time of a number of other SciPy submodules.
  • Support for free-threaded CPython was improved: the last known thread-safety issues in scipy.special were fixed, and pytest-run-parallel is now used in a CI job to guard against regressions.
  • Support for spin as a developer CLI was added, including support for editable installs. The SciPy-specific python dev.py CLI will be removed in the next release cycle in favor of spin.
  • The vendored Qhull library was upgraded from version 2019.1 to 2020.2.
  • A large amount of the C++ code in scipy.special was moved to the new header-only xsf library. That library was included back in the SciPy source tree as a git submodule.
  • The namedtuple-like bunch objects returned by some SciPy functions now have improved compatibility with the polars library.
  • The output of the rvs method of scipy.stats.wrapcauchy is now mapped to the unit circle between 0 and 2 * pi.
  • The lm method of scipy.optimize.least_squares now has a different behavior for the maximum number of function evaluations, max_nfev. The default for the lm method is changed to 100 * n, for both a callable and a numerically estimated jacobian. This limit on function evaluations excludes those used for any numerical estimation of the Jacobian. Previously the default when using an estimated jacobian was 100 * n * (n + 1), because the method included evaluations used in the estimation. In addition, for the lm method the number of function calls used in Jacobian approximation is no longer included in OptimizeResult.nfev. This brings the behavior of lm, trf, and dogbox into line.

Authors

  • Name (commits)
  • h-vetinari (4)
  • aiudirog (1) +
  • Anton Akhmerov (2)
  • Thorsten Alteholz (1) +
  • Gabriel Augusto (1) +
  • Backfisch263 (1) +
  • Nickolai Belakovski (5)
  • Peter Bell (1)
  • Benoît W. (1) +
  • Evandro Bernardes (1)
  • Gauthier Berthomieu (1) +
  • Maxwell Bileschi (1) +
  • Sam Birch (1) +
  • Florian Bourgey (3) +
  • Charles Bousseau (2) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (127)
  • Matthew Brett (1)
  • Dietrich Brunn (53)
  • Evgeni Burovski (254)
  • Christine P. Chai (12) +
  • Gayatri Chakkithara (1) +
  • Saransh Chopra (2) +
  • Omer Cohen (1) +
  • Lucas Colley (91)
  • Yahya Darman (3) +
  • Benjamin Eisele (1) +
  • Donnie Erb (1)
  • Sagi Ezri (58) +
  • Alexander Fabisch (2) +
  • Matthew H Flamm (1)
  • Karthik Viswanath Ganti (1) +
  • Neil Girdhar (1)
  • Ralf Gommers (162)
  • Rohit Goswami (4)
  • Saarthak Gupta (4) +
  • Matt Haberland (326)
  • Sasha Hafner (1) +
  • Joren Hammudoglu (11)
  • Chengyu Han (1) +
  • Charles Harris (1)
  • Kim Hsieh (4) +
  • Yongcai Huang (2) +
  • Lukas Huber (1) +
  • Yuji Ikeda (2) +
  • Guido Imperiale (105) +
  • Robert Kern (2)
  • Harin Khakhi (2) +
  • Agriya Khetarpal (4)
  • Daniil Kiktenko (1) +
  • Kirill R. (2) +
  • Tetsuo Koyama (1)
  • Jigyasu Krishnan (1) +
  • Abhishek Kumar (2) +
  • Pratham Kumar (3) +
  • David Kun (1) +
  • Eric Larson (3)
  • lciti (1)
  • Antony Lee (1)
  • Kieran Leschinski (1) +
  • Thomas Li (2) +
  • Yuxi Long (2) +
  • Christian Lorentzen (2)
  • Loïc Estève (4)
  • Panos Mavrogiorgos (1) +
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (10)
  • Michał Górny (1)
  • Miguel Cárdenas (2) +
  • Swastik Mishra (1) +
  • Sturla Molden (2)
  • Andreas Nazlidis (1) +
  • Andrew Nelson (209)
  • Parth Nobel (1) +
  • Nick ODell (9)
  • Giacomo Petrillo (1)
  • Victor PM (10) +
  • pmav99 (1) +
  • Ilhan Polat (74)
  • Tyler Reddy (128)
  • Érico Nogueira Rolim (1) +
  • Pamphile Roy (10)
  • Mikhail Ryazanov (6)
  • Atsushi Sakai (9)
  • Marco Salathe (1) +
  • sanvi (1) +
  • Neil Schemenauer (2) +
  • Daniel Schmitz (20)
  • Martin Schuck (1) +
  • Dan Schult (33)
  • Tomer Sery (19)
  • Adrian Seyboldt (1) +
  • Scott Shambaugh (4)
  • ShannonS00 (1) +
  • sildater (3) +
  • Param Singh (1) +
  • G Sreeja (7) +
  • Albert Steppi (133)
  • Kai Striega (3)
  • Anushka Suyal (2)
  • Julia Tatz (1) +
  • Tearyt (1) +
  • Elia Tomasi (1) +
  • Jamie Townsend (2) +
  • Edgar Andrés Margffoy Tuay (4)
  • Matthias Urlichs (1) +
  • Mark van Rossum (1) +
  • Jacob Vanderplas (2)
  • David Varela (2) +
  • Christian Veenhuis (3)
  • vfdev (1)
  • Stefan van der Walt (2)
  • Warren Weckesser (5)
  • Jason N. White (1) +
  • windows-server-2003 (5)
  • Zhiqing Xiao (1)
  • Pavadol Yamsiri (1)
  • Rory Yorke (3)
  • Irwin Zaid (4)
  • Austin Zhang (1) +
  • William Zijie Zhang (1) +
  • Zaikun Zhang (1) +
  • Zhenyu Zhu (1) +
  • Eric Zitong Zhou (11) +
  • Case Zumbrum (2) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (45)

A total of 126 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Complete issue list, PR list, and release asset hashes are available in the associated README.txt.

- Python
Published by tylerjereddy 11 months ago

scipy - SciPy 1.16.0rc2

SciPy 1.16.0 Release Notes

Note: SciPy 1.16.0 is not released yet!

SciPy 1.16.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.16.x branch, and on adding new features on the main branch.

This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.

Highlights of this release

  • Improved experimental support for the Python array API standard, including new support in scipy.signal, and additional support in scipy.stats and scipy.special. Improved support for JAX and Dask backends has been added, with notable support in scipy.cluster.hierarchy, many functions in scipy.special, and many of the trimmed statistics functions.
  • scipy.optimize now uses the new Python implementation from the PRIMA package for COBYLA. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation with a better performance on average.
  • scipy.sparse.coo_array now supports n-D arrays with reshaping, arithmetic and reduction operations like sum/mean/min/max. No n-D indexing or scipy.sparse.random_array support yet.
  • Updated guide and tools for migration from sparse matrices to sparse arrays.
  • Nearly all functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch.
  • Two new scipy.signal functions, scipy.signal.firwin_2d and scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and scipy.signal.ShortTimeFFT dual window calculation, respectively.
  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space.

New features

scipy.io improvements

  • scipy.io.savemat now provides informative warnings for invalid field names.
  • scipy.io.mmread now provides a clearer error message when provided with a source file path that does not exist.
  • scipy.io.wavfile.read can now read non-seekable files.

scipy.integrate improvements

  • The error estimate of scipy.integrate.tanhsinh was improved.

scipy.interpolate improvements

  • Batch support was added to scipy.interpolate.make_smoothing_spline.

scipy.linalg improvements

  • Nearly all functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch. See :ref:linalg_batch for details.
  • scipy.linalg.sqrtm is rewritten in C and its performance is improved. It also tries harder to return real-valued results for real-valued inputs if possible. See the function docstring for more details. In this version the input argument disp and the optional output argument errest are deprecated and will be removed four versions later. Similarly, after changing the underlying algorithm to recursion, the blocksize keyword argument has no effect and will be removed two versions later.
  • Wrappers for ?stevd, ?langb, ?sytri, ?hetri and ?gbcon were added to scipy.linalg.lapack.
  • The default driver of scipy.linalg.eigh_tridiagonal was improved.
  • scipy.linalg.solve can now estimate the reciprocal condition number and the matrix norm calculation is more efficient.

scipy.ndimage improvements

  • A new function scipy.ndimage.vectorized_filter for generic filters that take advantage of a vectorized Python callable was added.
  • scipy.ndimage.rotate has improved performance, especially on ARM platforms.

scipy.optimize improvements

  • COBYLA was updated to use the new Python implementation from the PRIMA package. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average, but it depends on the problem and for some problems it can result in more function evaluations or a less optimal result. For those cases the user can try modifying the initial and final trust region radii given by rhobeg and tol respectively. A larger rhobeg can help the algorithm take bigger steps initially, while a smaller tol can help it continue and find a better solution. For more information, see the PRIMA documentation.
  • Several of the scipy.optimize.minimize methods, and the scipy.optimize.least_squares function, have been given a workers keyword. This allows parallelization of some calculations via a map-like callable, such as multiprocessing.Pool. These parallelization opportunities typically occur during numerical differentiation. This can greatly speed up minimization when the objective function is expensive to calculate.
  • The lm method of scipy.optimize.least_squares can now accept 3-point and cs for the jac keyword.
  • The SLSQP Fortran 77 code was ported to C. When this method is used now the constraint multipliers are exposed to the user through the multiplier keyword of the returned scipy.optimize.OptimizeResult object.
  • NNLS code has been corrected and rewritten in C to address the performance regression introduced in 1.15.x
  • scipy.optimize.root now warns for invalid inner parameters when using the newton_krylov method
  • The return value of minimization with method='L-BFGS-B' now has a faster hess_inv.todense() implementation. Time complexity has improved from cubic to quadratic.
  • scipy.optimize.least_squares has a new callback argument that is applicable to the trf and dogbox methods. callback may be used to track optimization results at each step or to provide custom conditions for stopping.

scipy.signal improvements

  • A new function scipy.signal.firwin_2d for the creation of a 2-D FIR Filter using the 1-D window method was added.
  • scipy.signal.cspline1d_eval and scipy.signal.qspline1d_eval now provide an informative error on empty input rather than hitting the recursion limit.
  • A new function scipy.signal.closest_STFT_dual_window to calculate the scipy.signal.ShortTimeFFT dual window of a given window closest to a desired dual window.
  • A new classmethod scipy.signal.ShortTimeFFT.from_win_equals_dual to create a scipy.signal.ShortTimeFFT instance where the window and its dual are equal up to a scaling factor. It allows to create short-time Fourier transforms which are unitary mappings.
  • The performance of scipy.signal.convolve2d was improved.

scipy.sparse improvements

  • scipy.sparse.coo_array now supports n-D arrays using binary and reduction operations.
  • Faster operations between two DIA arrays/matrices for: add, sub, multiply, matmul.
  • scipy.sparse.csgraph.dijkstra shortest_path is more efficient.
  • scipy.sparse.csgraph.yen has performance improvements.
  • Support for lazy loading of sparse.csgraph and sparse.linalg was added.

scipy.spatial improvements

  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space, its application to vectors and transform composition. It follows the same design approach as scipy.spatial.transform.Rotation.
  • scipy.spatial.transform.Rotation now has an appropriate __repr__ method, and improved performance for its scipy.spatial.transform.Rotation.apply method.

scipy.stats improvements

  • A new function scipy.stats.quantile, an array API compatible function for quantile estimation, was added.
  • scipy.stats.make_distribution was extended to work with existing discrete distributions and to facilitate the creation of custom distributions in the new random variable infrastructure.
  • A new distribution, scipy.stats.Binomial, was added.
  • An equal_var keyword was added to scipy.stats.tukey_hsd (enables the Games-Howell test) and scipy.stats.f_oneway (enables Welch ANOVA).
  • The moment calculation for scipy.stats.gennorm was improved.
  • The scipy.stats.mode implementation was vectorized, for faster batch calculation.
  • Support for axis, nan_policy, and keepdims keywords was added to scipy.stats.power_divergence, scipy.stats.chisquare, scipy.stats.pointbiserialr, scipy.stats.kendalltau, scipy.stats.weightedtau, scipy.stats.theilslopes, scipy.stats.siegelslopes, scipy.stats.boxcox_llf, and scipy.stats.linregress.
  • Support for keepdims and nan_policy keywords was added to scipy.stats.gstd.
  • The performance of scipy.stats.special_ortho_group and scipy.stats.pearsonr was improved.
  • Support for an rng keyword argument was added to the logcdf and cdf methods of multivariate_normal_gen and multivariate_normal_frozen.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to multiple submodules in recent versions of SciPy. Please consider testing these features by setting the environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, CuPy or Dask arrays as array arguments.

Many functions in scipy.stats, scipy.special, scipy.optimize, and scipy.constants now provide tables documenting compatible array and device types as well as support for lazy arrays and JIT compilation. New features with support and old features with support added for SciPy 1.16.0 include:

  • Most of the scipy.signal functionality
  • scipy.ndimage.vectorized_filter
  • scipy.special.stdtrit
  • scipy.special.softmax
  • scipy.special.log_softmax
  • scipy.stats.quantile
  • scipy.stats.gstd
  • scipy.stats.rankdata

Features with extended array API support (generally, improved support for JAX and Dask) in SciPy 1.16.0 include:

  • many of the scipy.cluster.hierarchy functions
  • many functions in scipy.special
  • many of the trimmed statistics functions in scipy.stats

SciPy now has a CI job that exercises GPU (CUDA) support, and as a result using PyTorch, CuPy or JAX arrays on GPU with SciPy is now more reliable.

Deprecated features

  • The unused atol argument of scipy.optimize.nnls is deprecated and will be removed in SciPy 1.18.0.
  • The disp argument of scipy.linalg.signm, scipy.linalg.logm, and scipy.linalg.sqrtm will be removed in SciPy 1.18.0.
  • scipy.stats.multinomial now emits a FutureWarning if the rows of p do not sum to 1.0. This condition will produce NaNs beginning in SciPy 1.18.0.

Expired Deprecations

  • scipy.sparse.conjtransp has been removed. Use .T.conj() instead.
  • The quadrature='trapz' option has been removed from scipy.integrate.quad_vec, and scipy.stats.trapz has been removed. Use trapezoid in both instances instead.
  • scipy.special.comb and scipy.special.perm now raise when exact=True and arguments are non-integral.
  • Support for inference of the two sets of measurements from the single argument x has been removed from scipy.stats.linregress. The data must be specified separately as x and y.
  • Support for NumPy masked arrays has been removed from scipy.stats.power_divergence and scipy.stats.chisquare.
  • A significant number of functions from non-public namespaces (e.g., scipy.sparse.base, scipy.interpolate.dfitpack) were cleaned up. They were previously already emitting deprecation warnings.

Backwards incompatible changes

  • Several of the scipy.linalg functions for solving a linear system (e.g. scipy.linalg.solve) documented that the RHS argument must be either 1-D or 2-D but did not always raise an error when the RHS argument had more the two dimensions. Now, many-dimensional right hand sides are treated according to the rules specified in :ref:linalg_batch.
  • scipy.stats.bootstrap now explicitly broadcasts elements of data to the same shape (ignoring axis) before performing the calculation.
  • Several submodule names are no longer available via from scipy.signal import *, but may still be imported directly, as detailed at https://github.com/scipy/scipy-stubs/pull/549.

Build and packaging related changes

  • The minimum supported version of Clang was bumped from 12.0 to 15.0.
  • The lowest supported macOS version for wheels on PyPI is now 10.14 instead of 10.13.
  • The sdist contents were optimized, resulting in a size reduction of about 50%, from 60 MB to 30 MB.
  • For Cython>=3.1.0, SciPy now uses the new cython --generate-shared functionality, which reduces the total size of SciPy's wheels and on-disk installations significantly.
  • SciPy no longer contains an internal shared library that requires RPATH support, after sf_error_state was removed from scipy.special.
  • A new build option -Duse-system-libraries has been added. It allows opting in to using system libraries instead of using vendored sources. Currently Boost.Math and Qhull are supported as system build dependencies.

Other changes

  • The internal dependency of scipy._lib on scipy.sparse was removed, which reduces the import time of a number of other SciPy submodules.
  • Support for free-threaded CPython was improved: the last known thread-safety issues in scipy.special were fixed, and pytest-run-parallel is now used in a CI job to guard against regressions.
  • Support for spin as a developer CLI was added, including support for editable installs. The SciPy-specific python dev.py CLI will be removed in the next release cycle in favor of spin.
  • The vendored Qhull library was upgraded from version 2019.1 to 2020.2.
  • A large amount of the C++ code in scipy.special was moved to the new header-only xsf library. That library was included back in the SciPy source tree as a git submodule.
  • The namedtuple-like bunch objects returned by some SciPy functions now have improved compatibility with the polars library.
  • The output of the rvs method of scipy.stats.wrapcauchy is now mapped to the unit circle between 0 and 2 * pi.
  • The lm method of scipy.optimize.least_squares now has a different behavior for the maximum number of function evaluations, max_nfev. The default for the lm method is changed to 100 * n, for both a callable and a numerically estimated jacobian. This limit on function evaluations excludes those used for any numerical estimation of the Jacobian. Previously the default when using an estimated jacobian was 100 * n * (n + 1), because the method included evaluations used in the estimation. In addition, for the lm method the number of function calls used in Jacobian approximation is no longer included in OptimizeResult.nfev. This brings the behavior of lm, trf, and dogbox into line.

Authors

  • Name (commits)
  • h-vetinari (4)
  • aiudirog (1) +
  • Anton Akhmerov (2)
  • Thorsten Alteholz (1) +
  • Gabriel Augusto (1) +
  • Backfisch263 (1) +
  • Nickolai Belakovski (5)
  • Peter Bell (1)
  • Benoît W. (1) +
  • Evandro Bernardes (1)
  • Gauthier Berthomieu (1) +
  • Maxwell Bileschi (1) +
  • Sam Birch (1) +
  • Florian Bourgey (3) +
  • Charles Bousseau (2) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (126)
  • Matthew Brett (1)
  • Dietrich Brunn (53)
  • Evgeni Burovski (252)
  • Christine P. Chai (12) +
  • Gayatri Chakkithara (1) +
  • Saransh Chopra (2) +
  • Omer Cohen (1) +
  • Lucas Colley (91)
  • Yahya Darman (3) +
  • Benjamin Eisele (1) +
  • Donnie Erb (1)
  • Sagi Ezri (58) +
  • Alexander Fabisch (2) +
  • Matthew H Flamm (1)
  • Karthik Viswanath Ganti (1) +
  • Neil Girdhar (1)
  • Ralf Gommers (158)
  • Rohit Goswami (4)
  • Saarthak Gupta (4) +
  • Matt Haberland (325)
  • Sasha Hafner (1) +
  • Joren Hammudoglu (9)
  • Chengyu Han (1) +
  • Charles Harris (1)
  • Kim Hsieh (4) +
  • Yongcai Huang (2) +
  • Lukas Huber (1) +
  • Yuji Ikeda (2) +
  • Guido Imperiale (104) +
  • Robert Kern (2)
  • Harin Khakhi (2) +
  • Agriya Khetarpal (4)
  • Kirill R. (2) +
  • Tetsuo Koyama (1)
  • Jigyasu Krishnan (1) +
  • Abhishek Kumar (2) +
  • Pratham Kumar (3) +
  • David Kun (1) +
  • Eric Larson (3)
  • lciti (1)
  • Antony Lee (1)
  • Kieran Leschinski (1) +
  • Thomas Li (2) +
  • Christian Lorentzen (2)
  • Loïc Estève (4)
  • Panos Mavrogiorgos (1) +
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (10)
  • Michał Górny (1)
  • Miguel Cárdenas (2) +
  • Swastik Mishra (1) +
  • Sturla Molden (2)
  • Andreas Nazlidis (1) +
  • Andrew Nelson (209)
  • Parth Nobel (1) +
  • Nick ODell (9)
  • Giacomo Petrillo (1)
  • Victor PM (10) +
  • pmav99 (1) +
  • Ilhan Polat (73)
  • Tyler Reddy (96)
  • Érico Nogueira Rolim (1) +
  • Pamphile Roy (10)
  • Mikhail Ryazanov (6)
  • Atsushi Sakai (9)
  • Marco Salathe (1) +
  • sanvi (1) +
  • Neil Schemenauer (2) +
  • Daniel Schmitz (20)
  • Martin Schuck (1) +
  • Dan Schult (33)
  • Tomer Sery (19)
  • Adrian Seyboldt (1) +
  • Scott Shambaugh (4)
  • ShannonS00 (1) +
  • sildater (3) +
  • Param Singh (1) +
  • G Sreeja (7) +
  • Albert Steppi (133)
  • Kai Striega (3)
  • Anushka Suyal (2)
  • Julia Tatz (1) +
  • Tearyt (1) +
  • Elia Tomasi (1) +
  • Jamie Townsend (2) +
  • Edgar Andrés Margffoy Tuay (4)
  • Matthias Urlichs (1) +
  • Mark van Rossum (1) +
  • Jacob Vanderplas (2)
  • David Varela (2) +
  • Christian Veenhuis (3)
  • vfdev (1)
  • Stefan van der Walt (2)
  • Warren Weckesser (5)
  • Jason N. White (1) +
  • windows-server-2003 (5)
  • Zhiqing Xiao (1)
  • Pavadol Yamsiri (1)
  • Rory Yorke (3)
  • Irwin Zaid (4)
  • Austin Zhang (1) +
  • William Zijie Zhang (1) +
  • Zaikun Zhang (1) +
  • Zhenyu Zhu (1) +
  • Eric Zitong Zhou (11) +
  • Case Zumbrum (2) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (45)

A total of 124 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Complete issue and PR lists are available in the README.txt release artifact.

- Python
Published by tylerjereddy 12 months ago

scipy - SciPy 1.16.0rc1

SciPy 1.16.0 Release Notes

Note: SciPy 1.16.0 is not released yet!

SciPy 1.16.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.16.x branch, and on adding new features on the main branch.

This release requires Python 3.11-3.13 and NumPy 1.25.2 or greater.

Highlights of this release

  • Improved experimental support for the Python array API standard, including new support in scipy.signal, and additional support in scipy.stats and scipy.special. Improved support for JAX and Dask backends has been added, with notable support in scipy.cluster.hierarchy, many functions in scipy.special, and many of the trimmed statistics functions.
  • scipy.optimize now uses the new Python implementation from the PRIMA package for COBYLA. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation with a better performance on average.
  • scipy.sparse.coo_array now supports n-D arrays with reshaping, arithmetic and reduction operations like sum/mean/min/max. No n-D indexing or scipy.sparse.random_array support yet.
  • Updated guide and tools for migration from sparse matrices to sparse arrays.
  • All functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch.
  • Two new scipy.signal functions, scipy.signal.firwin_2d and scipy.signal.closest_STFT_dual_window, for creation of a 2-D FIR filter and scipy.signal.ShortTimeFFT dual window calculation, respectively.
  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space.

New features

scipy.io improvements

  • scipy.io.savemat now provides informative warnings for invalid field names.
  • scipy.io.mmread now provides a clearer error message when provided with a source file path that does not exist.
  • scipy.io.wavfile.read can now read non-seekable files.

scipy.integrate improvements

  • The error estimate of scipy.integrate.tanhsinh was improved.

scipy.interpolate improvements

  • Batch support was added to scipy.interpolate.make_smoothing_spline.

scipy.linalg improvements

  • All functions in the scipy.linalg namespace that accept array arguments now support N-dimensional arrays to be processed as a batch. See :ref:linalg_batch for details.
  • scipy.linalg.sqrtm is rewritten in C and its performance is improved. It also tries harder to return real-valued results for real-valued inputs if possible. See the function docstring for more details. In this version the input argument disp and the optional output argument errest are deprecated and will be removed four versions later. Similarly, after changing the underlying algorithm to recursion, the blocksize keyword argument has no effect and will be removed two versions later.
  • Wrappers for ?stevd, ?langb, ?sytri, ?hetri and ?gbcon were added to scipy.linalg.lapack.
  • The default driver of scipy.linalg.eigh_tridiagonal was improved.
  • scipy.linalg.solve can now estimate the reciprocal condition number and the matrix norm calculation is more efficient.

scipy.ndimage improvements

  • A new function scipy.ndimage.vectorized_filter for generic filters that take advantage of a vectorized Python callable was added.
  • scipy.ndimage.rotate has improved performance, especially on ARM platforms.

scipy.optimize improvements

  • COBYLA was updated to use the new Python implementation from the PRIMA package. The PRIMA implementation fixes many bugs in the old Fortran 77 implementation. In addition, it results in fewer function evaluations on average, but it depends on the problem and for some problems it can result in more function evaluations or a less optimal result. For those cases the user can try modifying the initial and final trust region radii given by rhobeg and tol respectively. A larger rhobeg can help the algorithm take bigger steps initially, while a smaller tol can help it continue and find a better solution. For more information, see the PRIMA documentation.
  • Several of the scipy.optimize.minimize methods, and the scipy.optimize.least_squares function, have been given a workers keyword. This allows parallelization of some calculations via a map-like callable, such as multiprocessing.Pool. These parallelization opportunities typically occur during numerical differentiation. This can greatly speed up minimization when the objective function is expensive to calculate.
  • The lm method of scipy.optimize.least_squares can now accept 3-point and cs for the jac keyword.
  • The SLSQP Fortran 77 code was ported to C. When this method is used now the constraint multipliers are exposed to the user through the multiplier keyword of the returned scipy.optimize.OptimizeResult object.
  • NNLS code has been corrected and rewritten in C to address the performance regression introduced in 1.15.x
  • scipy.optimize.root now warns for invalid inner parameters when using the newton_krylov method
  • The return value of minimization with method='L-BFGS-B' now has a faster hess_inv.todense() implementation. Time complexity has improved from cubic to quadratic.
  • scipy.optimize.least_squares has a new callback argument that is applicable to the trf and dogbox methods. callback may be used to track optimization results at each step or to provide custom conditions for stopping.

scipy.signal improvements

  • A new function scipy.signal.firwin_2d for the creation of a 2-D FIR Filter using the 1-D window method was added.
  • scipy.signal.cspline1d_eval and scipy.signal.qspline1d_eval now provide an informative error on empty input rather than hitting the recursion limit.
  • A new function scipy.signal.closest_STFT_dual_window to calculate the ~scipy.signal.ShortTimeFFT dual window of a given window closest to a desired dual window.
  • A new classmethod scipy.signal.ShortTimeFFT.from_win_equals_dual to create a ~scipy.signal.ShortTimeFFT instance where the window and its dual are equal up to a scaling factor. It allows to create short-time Fourier transforms which are unitary mappings.
  • The performance of scipy.signal.convolve2d was improved.

scipy.sparse improvements

  • scipy.sparse.coo_array now supports n-D arrays using binary and reduction operations.
  • Faster operations between two DIA arrays/matrices for: add, sub, multiply, matmul.
  • scipy.sparse.csgraph.dijkstra shortest_path is more efficient.
  • scipy.sparse.csgraph.yen has performance improvements.
  • Support for lazy loading of sparse.csgraph and sparse.linalg was added.

scipy.spatial improvements

  • A new class, scipy.spatial.transform.RigidTransform, provides functionality to convert between different representations of rigid transforms in 3-D space, its application to vectors and transform composition. It follows the same design approach as scipy.spatial.transform.Rotation.
  • scipy.spatial.transform.Rotation now has an appropriate __repr__ method, and improved performance for its scipy.spatial.transform.Rotation.apply method.

scipy.stats improvements

  • A new function scipy.stats.quantile, an array API compatible function for quantile estimation, was added.
  • scipy.stats.make_distribution was extended to work with existing discrete distributions and to facilitate the creation of custom distributions in the new random variable infrastructure.
  • A new distribution, scipy.stats.Binomial, was added.
  • An equal_var keyword was added to scipy.stats.tukey_hsd (enables the Games-Howell test) and scipy.stats.f_oneway (enables Welch ANOVA).
  • The moment calculation for scipy.stats.gennorm was improved.
  • The scipy.stats.mode implementation was vectorized, for faster batch calculation.
  • Support for axis, nan_policy, and keepdims keywords was added to scipy.stats.power_divergence, scipy.stats.chisquare, scipy.stats.pointbiserialr, scipy.stats.kendalltau, scipy.stats.weightedtau, scipy.stats.theilslopes, scipy.stats.siegelslopes, and scipy.stats.boxcox_llf.
  • The performance of scipy.stats.special_ortho_group and scipy.stats.pearsonr was improved.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to multiple submodules in recent versions of SciPy. Please consider testing these features by setting the environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, CuPy or Dask arrays as array arguments.

Many functions in scipy.stats, scipy.special, scipy.optimize, and scipy.constants now provide tables documenting compatible array and device types as well as support for lazy arrays and JIT compilation. New features with support and old features with support added for SciPy 1.16.0 include:

  • Most of the scipy.signal functionality
  • scipy.ndimage.vectorized_filter
  • scipy.special.stdtrit
  • scipy.special.softmax
  • scipy.special.log_softmax
  • scipy.stats.quantile
  • scipy.stats.gstd
  • scipy.stats.rankdata

Features with extended array API support (generally, improved support for JAX and Dask) in SciPy 1.16.0 include:

  • many of the scipy.cluster.hierarchy functions
  • many functions in scipy.special
  • many of the trimmed statistics functions in scipy.stats

SciPy now has a CI job that exercises GPU (CUDA) support, and as a result using PyTorch, CuPy or JAX arrays on GPU with SciPy is now more reliable.

Deprecated features

  • The unused atol argument of scipy.optimize.nnls is deprecated and will be removed in SciPy 1.18.0.
  • The disp argument of scipy.linalg.signm, scipy.linalg.logm, and scipy.linalg.sqrtm will be removed in SciPy 1.18.0.
  • scipy.stats.multinomial now emits a FutureWarning if the rows of p do not sum to 1.0. This condition will produce NaNs beginning in SciPy 1.18.0.

Expired Deprecations

  • scipy.sparse.conjtransp has been removed. Use .T.conj() instead.
  • The quadrature='trapz' option has been removed from scipy.integrate.quad_vec, and scipy.stats.trapz has been removed. Use trapezoid in both instances instead.
  • scipy.special.comb and scipy.special.perm now raise when exact=True and arguments are non-integral.
  • Support for inference of the two sets of measurements from the single argument x has been removed from scipy.stats.linregress. The data must be specified separately as x and y.
  • Support for NumPy masked arrays has been removed from scipy.stats.power_divergence and scipy.stats.chisquare.

Backwards incompatible changes

  • Several of the scipy.linalg functions for solving a linear system (e.g. scipy.linalg.solve) documented that the RHS argument must be either 1-D or 2-D but did not always raise an error when the RHS argument had more the two dimensions. Now, many-dimensional right hand sides are treated according to the rules specified in :ref:linalg_batch.
  • scipy.stats.bootstrap now explicitly broadcasts elements of data to the same shape (ignoring axis) before performing the calculation.

Build and packaging related changes

  • The minimum supported version of Clang was bumped from 12.0 to 15.0.
  • The lowest supported macOS version for wheels on PyPI is now 10.14 instead of 10.13.
  • The sdist contents were optimized, resulting in a size reduction of about 50%, from 60 MB to 30 MB.
  • For Cython>=3.1.0, SciPy now uses the new cython --generate-shared functionality, which reduces the total size of SciPy's wheels and on-disk installations significantly.
  • SciPy no longer contains an internal shared library that requires RPATH support, after sf_error_state was removed from scipy.special.
  • A new build option -Duse-system-libraries has been added. It allows opting in to using system libraries instead of using vendored sources. Currently Boost.Math and Qhull are supported as system build dependencies.

Other changes

  • The internal dependency of scipy._lib on scipy.sparse was removed, which reduces the import time of a number of other SciPy submodules.
  • Support for free-threaded CPython was improved: the last known thread-safety issues in scipy.special were fixed, and pytest-run-parallel is now used in a CI job to guard against regressions.
  • Support for spin as a developer CLI was added, including support for editable installs. The SciPy-specific python dev.py CLI will be removed in the next release cycle in favor of spin.
  • The vendored Qhull library was upgraded from version 2019.1 to 2020.2.
  • A large amount of the C++ code in scipy.special was moved to the new header-only xsf library. That library was included back in the SciPy source tree as a git submodule.
  • The namedtuple-like bunch objects returned by some SciPy functions now have improved compatibility with the polars library.
  • The output of the rvs method of scipy.stats.wrapcauchy is now mapped to the unit circle between 0 and 2 * pi.
  • The lm method of scipy.optimize.least_squares now has a different behavior for the maximum number of function evaluations, max_nfev. The default for the lm method is changed to 100 * n, for both a callable and a numerically estimated jacobian. This limit on function evaluations excludes those used for any numerical estimation of the Jacobian. Previously the default when using an estimated jacobian was 100 * n * (n + 1), because the method included evaluations used in the estimation. In addition, for the lm method the number of function calls used in Jacobian approximation is no longer included in OptimizeResult.nfev. This brings the behavior of lm, trf, and dogbox into line.

Authors

  • Name (commits)
  • h-vetinari (4)
  • aiudirog (1) +
  • Anton Akhmerov (2)
  • Thorsten Alteholz (1) +
  • Gabriel Augusto (1) +
  • Backfisch263 (1) +
  • Nickolai Belakovski (5)
  • Peter Bell (1)
  • Benoît W. (1) +
  • Evandro Bernardes (1)
  • Gauthier Berthomieu (1) +
  • Maxwell Bileschi (1) +
  • Sam Birch (1) +
  • Florian Bourgey (3) +
  • Charles Bousseau (2) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (126)
  • Matthew Brett (1)
  • Dietrich Brunn (52)
  • Evgeni Burovski (252)
  • Christine P. Chai (12) +
  • Gayatri Chakkithara (1) +
  • Saransh Chopra (2) +
  • Omer Cohen (1) +
  • Lucas Colley (91)
  • Yahya Darman (3) +
  • Benjamin Eisele (1) +
  • Donnie Erb (1)
  • Sagi Ezri (58) +
  • Alexander Fabisch (2) +
  • Matthew H Flamm (1)
  • Karthik Viswanath Ganti (1) +
  • Neil Girdhar (1)
  • Ralf Gommers (153)
  • Rohit Goswami (4)
  • Saarthak Gupta (4) +
  • Matt Haberland (320)
  • Sasha Hafner (1) +
  • Joren Hammudoglu (9)
  • Chengyu Han (1) +
  • Charles Harris (1)
  • Kim Hsieh (4) +
  • Yongcai Huang (2) +
  • Lukas Huber (1) +
  • Yuji Ikeda (2) +
  • Guido Imperiale (103) +
  • Robert Kern (2)
  • Harin Khakhi (2) +
  • Agriya Khetarpal (4)
  • Kirill R. (2) +
  • Tetsuo Koyama (1)
  • Jigyasu Krishnan (1) +
  • Pratham Kumar (3) +
  • David Kun (1) +
  • Eric Larson (3)
  • lciti (1)
  • Antony Lee (1)
  • Kieran Leschinski (1) +
  • Thomas Li (2) +
  • Christian Lorentzen (2)
  • Loïc Estève (4)
  • Panos Mavrogiorgos (1) +
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (10)
  • Miguel Cárdenas (2) +
  • Swastik Mishra (1) +
  • Sturla Molden (2)
  • Andreas Nazlidis (1) +
  • Andrew Nelson (209)
  • Parth Nobel (1) +
  • Nick ODell (9)
  • Giacomo Petrillo (1)
  • Victor PM (10) +
  • pmav99 (1) +
  • Ilhan Polat (73)
  • Tyler Reddy (66)
  • Érico Nogueira Rolim (1) +
  • Pamphile Roy (10)
  • Mikhail Ryazanov (6)
  • Atsushi Sakai (9)
  • Marco Salathe (1) +
  • sanvi (1) +
  • Neil Schemenauer (2) +
  • Daniel Schmitz (20)
  • Martin Schuck (1) +
  • Dan Schult (32)
  • Tomer Sery (19)
  • Adrian Seyboldt (1) +
  • Scott Shambaugh (4)
  • ShannonS00 (1) +
  • sildater (3) +
  • Param Singh (1) +
  • G Sreeja (7) +
  • Albert Steppi (133)
  • Kai Striega (3)
  • Anushka Suyal (2)
  • Julia Tatz (1) +
  • Tearyt (1) +
  • Elia Tomasi (1) +
  • Jamie Townsend (2) +
  • Edgar Andrés Margffoy Tuay (4)
  • Matthias Urlichs (1) +
  • Mark van Rossum (1) +
  • Jacob Vanderplas (2)
  • David Varela (2) +
  • Christian Veenhuis (3)
  • vfdev (1)
  • Stefan van der Walt (2)
  • Warren Weckesser (5)
  • Jason N. White (1) +
  • windows-server-2003 (5)
  • Zhiqing Xiao (1)
  • Pavadol Yamsiri (1)
  • Rory Yorke (3)
  • Irwin Zaid (4)
  • Austin Zhang (1) +
  • William Zijie Zhang (1) +
  • Zaikun Zhang (1) +
  • Eric Zitong Zhou (11) +
  • Case Zumbrum (2) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (45)

A total of 121 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Full issue and PR lists are available in the README.txt release artifact.

- Python
Published by tylerjereddy about 1 year ago

scipy - SciPy 1.15.3

SciPy 1.15.3 Release Notes

SciPy 1.15.3 is a bug-fix release with no new features compared to 1.15.2.

Authors

  • Name (commits)
  • aiudirog (1) +
  • Nickolai Belakovski (1)
  • Florian Bourgey (1) +
  • Richard Strong Bowen (2) +
  • Jake Bowhay (1)
  • Dietrich Brunn (2)
  • Evgeni Burovski (1)
  • Lucas Colley (1)
  • Ralf Gommers (1)
  • Saarthak Gupta (1) +
  • Matt Haberland (4)
  • Chengyu Han (1) +
  • Lukas Huber (1) +
  • Nick ODell (2)
  • Ilhan Polat (4)
  • Tyler Reddy (52)
  • Neil Schemenauer (1) +
  • Dan Schult (1)
  • sildater (1) +
  • Gagandeep Singh (4)
  • Albert Steppi (2)
  • Matthias Urlichs (1) +
  • David Varela (1) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (3)

A total of 24 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 1 year ago

scipy - SciPy 1.15.2

SciPy 1.15.2 Release Notes

SciPy 1.15.2 is a bug-fix release with no new features compared to 1.15.1. Free-threaded Python 3.13 wheels for Linux ARM platform are available on PyPI starting with this release.

Authors

  • Name (commits)
  • Peter Bell (1)
  • Charles Bousseau (1) +
  • Jake Bowhay (3)
  • Matthew Brett (1)
  • Ralf Gommers (3)
  • Rohit Goswami (1)
  • Matt Haberland (4)
  • Parth Nobel (1) +
  • Tyler Reddy (33)
  • Daniel Schmitz (2)
  • Dan Schult (5)
  • Scott Shambaugh (2)
  • Edgar Andrés Margffoy Tuay (1)
  • Warren Weckesser (4)

A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 1 year ago

scipy - SciPy 1.15.1

SciPy 1.15.1 Release Notes

SciPy 1.15.1 is a bug-fix release with no new features compared to 1.15.0. Importantly, an issue with the import of scipy.optimize breaking other packages has been fixed.

Authors

  • Name (commits)
  • Ralf Gommers (3)
  • Rohit Goswami (1)
  • Matt Haberland (2)
  • Tyler Reddy (7)
  • Daniel Schmitz (1)

A total of 5 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 1 year ago

scipy - SciPy 1.15.0

SciPy 1.15.0 Release Notes

SciPy 1.15.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.15.x branch, and on adding new features on the main branch.

This release requires Python 3.10-3.13 and NumPy 1.23.5 or greater.

Highlights of this release

  • Sparse arrays are now fully functional for 1-D and 2-D arrays. We recommend that all new code use sparse arrays instead of sparse matrices and that developers start to migrate their existing code from sparse matrix to sparse array: migration_to_sparray. Both sparse.linalg and sparse.csgraph work with either sparse matrix or sparse array and work internally with sparse array.
  • Sparse arrays now provide basic support for n-D arrays in the COO format including add, subtract, reshape, transpose, matmul, dot, tensordot and others. More functionality is coming in future releases.
  • Preliminary support for free-threaded Python 3.13.
  • New probability distribution features in scipy.stats can be used to improve the speed and accuracy of existing continuous distributions and perform new probability calculations.
  • Several new features support vectorized calculations with Python Array API Standard compatible input (see "Array API Standard Support" below):

    • scipy.differentiate is a new top-level submodule for accurate estimation of derivatives of black box functions.
    • scipy.optimize.elementwise contains new functions for root-finding and minimization of univariate functions.
    • scipy.integrate offers new functions cubature, tanhsinh, and nsum for multivariate integration, univariate integration, and univariate series summation, respectively.
  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.

  • scipy.special adds new functions offering improved Legendre function implementations with a more consistent interface.

New features

scipy.differentiate introduction

The new scipy.differentiate sub-package contains functions for accurate estimation of derivatives of black box functions.

  • Use scipy.differentiate.derivative for first-order derivatives of scalar-in, scalar-out functions.
  • Use scipy.differentiate.jacobian for first-order partial derivatives of vector-in, vector-out functions.
  • Use scipy.differentiate.hessian for second-order partial derivatives of vector-in, scalar-out functions.

All functions use high-order finite difference rules with adaptive (real) step size. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below).

scipy.integrate improvements

  • The new scipy.integrate.cubature function supports multidimensional integration, and has support for approximating integrals with one or more sets of infinite limits.
  • scipy.integrate.tanhsinh is now exposed for public use, allowing evaluation of a convergent integral using tanh-sinh quadrature.
  • scipy.integrate.nsum evaluates finite and infinite series and their logarithms.
  • scipy.integrate.lebedev_rule computes abscissae and weights for integration over the surface of a sphere.
  • The QUADPACK Fortran77 package has been ported to C.

scipy.interpolate improvements

  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.
  • scipy.interpolate.FloaterHormannInterpolator adds barycentric rational interpolation.
  • New functions scipy.interpolate.make_splrep and scipy.interpolate.make_splprep implement construction of smoothing splines. The algorithmic content is equivalent to FITPACK (splrep and splprep functions, and *UnivariateSpline classes) and the user API is consistent with make_interp_spline: these functions receive data arrays and return a scipy.interpolate.BSpline instance.
  • New generator function scipy.interpolate.generate_knots implements the FITPACK strategy for selecting knots of a smoothing spline given the smoothness parameter, s. The function exposes the internal logic of knot selection that splrep and *UnivariateSpline was using.

scipy.linalg improvements

  • scipy.linalg.interpolative Fortran77 code has been ported to Cython.
  • scipy.linalg.solve supports several new values for the assume_a argument, enabling faster computation for diagonal, tri-diagonal, banded, and triangular matrices. Also, when assume_a is left unspecified, the function now automatically detects and exploits diagonal, tri-diagonal, and triangular structures.
  • scipy.linalg matrix creation functions (scipy.linalg.circulant, scipy.linalg.companion, scipy.linalg.convolution_matrix, scipy.linalg.fiedler, scipy.linalg.fiedler_companion, and scipy.linalg.leslie) now support batch matrix creation.
  • scipy.linalg.funm is faster.
  • scipy.linalg.orthogonal_procrustes now supports complex input.
  • Wrappers for the following LAPACK routines have been added in scipy.linalg.lapack: ?lantr, ?sytrs, ?hetrs, ?trcon, and ?gtcon.
  • scipy.linalg.expm was rewritten in C.
  • scipy.linalg.null_space now accepts the new arguments overwrite_a, check_finite, and lapack_driver.
  • id_dist Fortran code was rewritten in Cython.

scipy.ndimage improvements

  • Several additional filtering functions now support an axes argument that specifies which axes of the input filtering is to be performed on. These include correlate, convolve, generic_laplace, laplace, gaussian_laplace, derivative2, generic_gradient_magnitude, gaussian_gradient_magnitude and generic_filter.
  • The binary and grayscale morphology functions now support an axes argument that specifies which axes of the input filtering is to be performed on.
  • scipy.ndimage.rank_filter time complexity has improved from n to log(n).

scipy.optimize improvements

  • The vendored HiGHS library has been upgraded from 1.4.0 to 1.8.0, bringing accuracy and performance improvements to solvers.
  • The MINPACK Fortran77 package has been ported to C.
  • The L-BFGS-B Fortran77 package has been ported to C.
  • The new scipy.optimize.elementwise namespace includes functions bracket_root, find_root, bracket_minimum, and find_minimum for root-finding and minimization of univariate functions. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below). Compared to existing functions (e.g. scipy.optimize.root_scalar and scipy.optimize.minimize_scalar), these functions can offer speedups of over 100x when used with NumPy arrays, and even greater gains are possible with other Array API Standard compatible array libraries (e.g. CuPy).
  • scipy.optimize.differential_evolution now supports more general use of workers, such as passing a map-like callable.
  • scipy.optimize.nnls was rewritten in Cython.
  • HessianUpdateStrategy now supports __matmul__.

scipy.signal improvements

  • Add functionality of complex-valued waveforms to signal.chirp().
  • scipy.signal.lombscargle has two new arguments, weights and floating_mean, enabling sample weighting and removal of an unknown y-offset independently for each frequency. Additionally, the normalize argument includes a new option to return the complex representation of the amplitude and phase.
  • New function scipy.signal.envelope for computation of the envelope of a real or complex valued signal.

scipy.sparse improvements

  • A migration guide is now available for moving from sparse.matrix to sparse.array in your code/library.
  • Sparse arrays now support indexing for 1-D and 2-D arrays. So, sparse arrays are now fully functional for 1-D and 2D.
  • n-D sparse arrays in COO format can now be constructed, reshaped and used for basic arithmetic.
  • New functions sparse.linalg.is_sptriangular and sparse.linalg.spbandwidth mimic the existing dense tools linalg.is_triangular and linalg.bandwidth.
  • sparse.linalg and sparse.csgraph now work with sparse arrays. Be careful that your index arrays are 32-bit. We are working on 64bit support.
  • The vendored ARPACK library has been upgraded to version 3.9.1.
  • COO, CSR, CSC and LIL formats now support the axis argument for count_nonzero.
  • Sparse arrays and matrices may now raise errors when initialized with incompatible data types, such as float16.
  • min, max, argmin, and argmax now support computation over nonzero elements only via the new explicit argument.
  • New functions get_index_dtype and safely_cast_index_arrays are available to facilitate index array casting in sparse.

scipy.spatial improvements

  • Rotation.concatenate now accepts a bare Rotation object, and will return a copy of it.

scipy.special improvements

  • New functions offering improved Legendre function implementations with a more consistent interface. See respective docstrings for more information.

    • scipy.special.legendre_p, scipy.special.legendre_p_all
    • scipy.special.assoc_legendre_p, scipy.special.assoc_legendre_p_all
    • scipy.special.sph_harm_y, scipy.special.sph_harm_y_all
    • scipy.special.sph_legendre_p, scipy.special.sph_legendre_p_all,
  • The factorial functions special.{factorial,factorial2,factorialk} now offer an extension to the complex domain by passing the kwarg extend='complex'. This is opt-in because it changes the values for negative inputs (which by default return 0), as well as for some integers (in the case of factorial2 and factorialk; for more details, check the respective docstrings).

  • scipy.special.zeta now defines the Riemann zeta function on the complex plane.

  • scipy.special.softplus computes the softplus function

  • The spherical Bessel functions (scipy.special.spherical_jn, scipy.special.spherical_yn, scipy.special.spherical_in, and scipy.special.spherical_kn) now support negative arguments with real dtype.

  • scipy.special.logsumexp now preserves precision when one element of the sum has magnitude much bigger than the rest.

  • The accuracy of several functions has been improved:

    • scipy.special.ncfdtr, scipy.special.nctdtr, and scipy.special.gdtrib have been improved throughout the domain.
    • scipy.special.hyperu is improved for the case of b=1, small x, and small a.
    • scipy.special.logit is improved near the argument p=0.5.
    • scipy.special.rel_entr is improved when x/y overflows, underflows, or is close to 1.
  • scipy.special.ndtr is now more efficient for sqrt(2)/2 < |x| < 1.

scipy.stats improvements

  • A new probability distribution infrastructure has been added for the implementation of univariate, continuous distributions. It has several speed, accuracy, memory, and interface advantages compared to the previous infrastructure. See rv_infrastructure for a tutorial.

    • Use scipy.stats.make_distribution to treat an existing continuous distribution (e.g. scipy.stats.norm) with the new infrastructure. This can improve the speed and accuracy of existing distributions, especially those with methods not overridden with distribution-specific formulas.
    • scipy.stats.Normal and scipy.stats.Uniform are pre-defined classes to represent the normal and uniform distributions, respectively. Their interfaces may be faster and more convenient than those produced by make_distribution.
    • scipy.stats.Mixture can be used to represent mixture distributions.
  • Instances of scipy.stats.Normal, scipy.stats.Uniform, and the classes returned by scipy.stats.make_distribution are supported by several new mathematical transformations.

    • scipy.stats.truncate for truncation of the support.
    • scipy.stats.order_statistic for the order statistics of a given number of IID random variables.
    • scipy.stats.abs, scipy.stats.exp, and scipy.stats.log. For example, scipy.stats.abs(Normal()) is distributed according to the folded normal and scipy.stats.exp(Normal()) is lognormally distributed.
  • The new scipy.stats.lmoment calculates sample l-moments and l-moment ratios. Notably, these sample estimators are unbiased.

  • scipy.stats.chatterjeexi computes the Xi correlation coefficient, which can detect nonlinear dependence. The function also performs a hypothesis test of independence between samples.

  • scipy.stats.wilcoxon has improved method resolution logic for the default method='auto'. Other values of method provided by the user are now respected in all cases, and the method argument approx has been renamed to asymptotic for consistency with similar functions. (Use of approx is still allowed for backward compatibility.)

  • There are several new probability distributions:

    • scipy.stats.dpareto_lognorm represents the double Pareto lognormal distribution.
    • scipy.stats.landau represents the Landau distribution.
    • scipy.stats.normal_inverse_gamma represents the normal-inverse-gamma distribution.
    • scipy.stats.poisson_binom represents the Poisson binomial distribution.
  • Batch calculation with scipy.stats.alexandergovern and scipy.stats.combine_pvalues is faster.

  • scipy.stats.chisquare added an argument sum_check. By default, the function raises an error when the sum of expected and obseved frequencies are not equal; setting sum_check=False disables this check to facilitate hypothesis tests other than Pearson's chi-squared test.

  • The accuracy of several distribution methods has been improved, including:

    • scipy.stats.nct method pdf
    • scipy.stats.crystalball method sf
    • scipy.stats.geom method rvs
    • scipy.stats.cauchy methods logpdf, pdf, ppf and isf
    • The logcdf and/or logsf methods of distributions that do not override the generic implementation of these methods, including scipy.stats.beta, scipy.stats.betaprime, scipy.stats.cauchy, scipy.stats.chi, scipy.stats.chi2, scipy.stats.exponweib, scipy.stats.gamma, scipy.stats.gompertz, scipy.stats.halflogistic, scipy.stats.hypsecant, scipy.stats.invgamma, scipy.stats.laplace, scipy.stats.levy, scipy.stats.loggamma, scipy.stats.maxwell, scipy.stats.nakagami, and scipy.stats.t.
  • scipy.stats.qmc.PoissonDisk now accepts lower and upper bounds parameters l_bounds and u_bounds.

  • scipy.stats.fisher_exact now supports two-dimensional tables with shapes other than (2, 2).

Preliminary Support for Free-Threaded CPython 3.13

SciPy 1.15 has preliminary support for the free-threaded build of CPython 3.13. This allows SciPy functionality to execute in parallel with Python threads (see the threading stdlib module). This support was enabled by fixing a significant number of thread-safety issues in both pure Python and C/C++/Cython/Fortran extension modules. Wheels are provided on PyPI for this release; NumPy >=2.1.3 is required at runtime. Note that building for a free-threaded interpreter requires a recent pre-release or nightly for Cython 3.1.0.

Support for free-threaded Python does not mean that SciPy is fully thread-safe. Please see scipy_thread_safety for more details.

If you are interested in free-threaded Python, for example because you have a multiprocessing-based workflow that you are interested in running with Python threads, we encourage testing and experimentation. If you run into problems that you suspect are because of SciPy, please open an issue, checking first if the bug also occurs in the "regular" non-free-threaded CPython 3.13 build. Many threading bugs can also occur in code that releases the GIL; disabling the GIL only makes it easier to hit threading bugs.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, ndonnx, or CuPy arrays as array arguments. Features with support added for SciPy 1.15.0 include:

  • All functions in scipy.differentiate (new sub-package)
  • All functions in scipy.optimize.elementwise (new namespace)
  • scipy.optimize.rosen, scipy.optimize.rosen_der, and scipy.optimize.rosen_hess
  • scipy.special.logsumexp
  • scipy.integrate.trapezoid
  • scipy.integrate.tanhsinh (newly public function)
  • scipy.integrate.cubature (new function)
  • scipy.integrate.nsum (new function)
  • scipy.special.chdtr, scipy.special.betainc, and scipy.special.betaincc
  • scipy.stats.boxcox_llf
  • scipy.stats.differential_entropy
  • scipy.stats.zmap, scipy.stats.zscore, and scipy.stats.gzscore
  • scipy.stats.tmean, scipy.stats.tvar, scipy.stats.tstd, scipy.stats.tsem, scipy.stats.tmin, and scipy.stats.tmax
  • scipy.stats.gmean, scipy.stats.hmean and scipy.stats.pmean
  • scipy.stats.combine_pvalues
  • scipy.stats.ttest_ind, scipy.stats.ttest_rel
  • scipy.stats.directional_stats
  • scipy.ndimage functions will now delegate to cupyx.scipy.ndimage, and for other backends will transit via NumPy arrays on the host.

Deprecated features and future changes

  • Functions scipy.linalg.interpolative.rand and scipy.linalg.interpolative.seed have been deprecated and will be removed in SciPy 1.17.0.
  • Complex inputs to scipy.spatial.distance.cosine and scipy.spatial.distance.correlation have been deprecated and will raise an error in SciPy 1.17.0.
  • scipy.spatial.distance.kulczynski1 and scipy.spatial.distance.sokalmichener were deprecated and will be removed in SciPy 1.17.0.
  • scipy.stats.find_repeats is deprecated and will be removed in SciPy 1.17.0. Please use numpy.unique/numpy.unique_counts instead.
  • scipy.linalg.kron is deprecated in favour of numpy.kron.
  • Using object arrays and longdouble arrays in scipy.signal convolution/correlation functions (scipy.signal.correlate, scipy.signal.convolve and scipy.signal.choose_conv_method) and filtering functions (scipy.signal.lfilter, scipy.signal.sosfilt) has been deprecated and will be removed in SciPy 1.17.0.
  • scipy.stats.linregress has deprecated one-argument use; the two variables must be specified as separate arguments.
  • scipy.stats.trapz is deprecated in favor of scipy.stats.trapezoid.
  • scipy.special.lpn is deprecated in favor of scipy.special.legendre_p_all.
  • scipy.special.lpmn and scipy.special.clpmn are deprecated in favor of scipy.special.assoc_legendre_p_all.
  • scipy.special.sph_harm has been deprecated in favor of scipy.special.sph_harm_y.
  • Multi-dimensional r and c arrays passed to scipy.linalg.toeplitz, scipy.linalg.matmul_toeplitz, or scipy.linalg.solve_toeplitz will be treated as batches of 1-D coefficients beginning in SciPy 1.17.0.
  • The random_state and permutations arguments of scipy.stats.ttest_ind are deprecated. Use method to perform a permutation test, instead.

Expired Deprecations

  • The wavelet functions in scipy.signal have been removed. This includes daub, qmf, cascade, morlet, morlet2, ricker, and cwt. Users should use pywavelets instead.
  • scipy.signal.cmplx_sort has been removed.
  • scipy.integrate.quadrature and scipy.integrate.romberg have been removed in favour of scipy.integrate.quad.
  • scipy.stats.rvs_ratio_uniforms has been removed in favor of scipy.stats.sampling.RatioUniforms.
  • scipy.special.factorial now raises an error for non-integer scalars when exact=True.
  • scipy.integrate.cumulative_trapezoid now raises an error for values of initial other than 0 and None.
  • Complex dtypes now raise an error in scipy.interpolate.Akima1DInterpolator and scipy.interpolate.PchipInterpolator
  • special.btdtr and special.btdtri have been removed.
  • The default of the exact= kwarg in special.factorialk has changed from True to False.
  • All functions in the scipy.misc submodule have been removed.

Backwards incompatible changes

  • interpolate.BSpline.integrate output is now always a numpy array. Previously, for 1D splines the output was a python float or a 0D array depending on the value of the extrapolate argument.
  • scipy.stats.wilcoxon now respects the method argument provided by the user. Previously, even if method='exact' was specified, the function would resort to method='approx' in some cases.
  • scipy.integrate.AccuracyWarning has been removed as the functions the warning was emitted from (scipy.integrate.quadrature and scipy.integrate.romberg) have been removed.

Other changes

  • A separate accompanying type stubs package, scipy-stubs, will be made available with the 1.15.0 release. Installation instructions are available.
  • scipy.stats.bootstrap now emits a FutureWarning if the shapes of the input arrays do not agree. Broadcast the arrays to the same batch shape (i.e. for all dimensions except those specified by the axis argument) to avoid the warning. Broadcasting will be performed automatically in the future.
  • SciPy endorsed SPEC-7, which proposes a rng argument to control pseudorandom number generation (PRNG) in a standard way, replacing legacy arguments like seed and random_sate. In many cases, use of rng will change the behavior of the function unless the argument is already an instance of numpy.random.Generator.

    • Effective in SciPy 1.15.0:
    • The rng argument has been added to the following functions: scipy.cluster.vq.kmeans, scipy.cluster.vq.kmeans2, scipy.interpolate.BarycentricInterpolator, scipy.interpolate.barycentric_interpolate, scipy.linalg.clarkson_woodruff_transform, scipy.optimize.basinhopping, scipy.optimize.differential_evolution, scipy.optimize.dual_annealing, scipy.optimize.check_grad, scipy.optimize.quadratic_assignment, scipy.sparse.random, scipy.sparse.random_array, scipy.sparse.rand, scipy.sparse.linalg.svds, scipy.spatial.transform.Rotation.random, scipy.spatial.distance.directed_hausdorff, scipy.stats.goodness_of_fit, scipy.stats.BootstrapMethod, scipy.stats.PermutationMethod, scipy.stats.bootstrap, scipy.stats.permutation_test, scipy.stats.dunnett, all scipy.stats.qmc classes that consume random numbers, and scipy.stats.sobol_indices.
    • When passed by keyword, the rng argument will follow the SPEC 7 standard behavior: the argument will be normalized with np.random.default_rng before being used.
    • When passed by position or legacy keyword, the behavior of the argument will remain unchanged (for now).
    • It is planned that in 1.17.0 the legacy argument will start emitting warnings, and that in 1.19.0 the default behavior will change.
    • In all cases, users can avoid future disruption by proactively passing an instance of np.random.Generator by keyword rng. For details, see SPEC-7.
  • The SciPy build no longer adds -std=legacy for Fortran code, except when using Gfortran. This avoids problems with the new Flang and AMD Fortran compilers. It may make new build warnings appear for other compilers - if so, please file an issue.

  • scipy.signal.sosfreqz has been renamed to scipy.signal.freqz_sos. New code should use the new name. The old name is maintained as an alias for backwards compatibility.

  • Testing thread-safety improvements related to Python 3.13t have been made in: scipy.special, scipy.spatial, scipy.sparse, scipy.interpolate.

Authors (commits)

  • endolith (4)
  • h-vetinari (62)
  • a-drenaline (1) +
  • Afleloup (1) +
  • Ahmad Alkadri (1) +
  • Luiz Eduardo Amaral (3) +
  • Virgile Andreani (3)
  • Isaac Alonso Asensio (2) +
  • Matteo Bachetti (1) +
  • Arash Badie-Modiri (1) +
  • Arnaud Baguet (1) +
  • Soutrik Bandyopadhyay (1) +
  • Ankit Barik (1) +
  • Christoph Baumgarten (1)
  • Nickolai Belakovski (3)
  • Krishan Bhasin (1) +
  • Jake Bowhay (89)
  • Michael Bratsch (2) +
  • Matthew Brett (1)
  • Keith Briggs (1) +
  • Olly Britton (145) +
  • Dietrich Brunn (11)
  • Clemens Brunner (1)
  • Evgeni Burovski (185)
  • Matthias Bussonnier (7)
  • CJ Carey (32)
  • Cesar Carrasco (4) +
  • Hood Chatham (1)
  • Aadya Chinubhai (1)
  • Alessandro Chitarrini (1) +
  • Thibault de Coincy (1) +
  • Lucas Colley (217)
  • Martin Diehl (1) +
  • Djip007 (1) +
  • Kevin Doshi (2) +
  • Michael Dunphy (2)
  • Andy Everall (1) +
  • Thomas J. Fan (2)
  • fancidev (60)
  • Sergey Fedorov (2) +
  • Sahil Garje (1) +
  • Gabriel Gerlero (2)
  • Yotam Gingold (1) +
  • Ralf Gommers (111)
  • Rohit Goswami (62)
  • Anil Gurses (1) +
  • Oscar Gustafsson (1) +
  • Matt Haberland (392)
  • Matt Hall (1) +
  • Joren Hammudoglu (6) +
  • CY Han (1) +
  • Daniel Isaac (4) +
  • Maxim Ivanov (1)
  • Jakob Jakobson (2)
  • Janez Demšar (4) +
  • Chris Jerdonek (2) +
  • Adam Jones (4) +
  • Aditi Juneja (1) +
  • Nuri Jung (1) +
  • Guus Kamphuis (1) +
  • Aditya Karumanchi (2) +
  • Robert Kern (5)
  • Agriya Khetarpal (11)
  • Andrew Knyazev (7)
  • Gideon Genadi Kogan (1) +
  • Damien LaRocque (1) +
  • Eric Larson (10)
  • Gregory R. Lee (4)
  • Linfye (1) +
  • Boyu Liu (1) +
  • Drew Allan Loney (1) +
  • Christian Lorentzen (1)
  • Loïc Estève (2)
  • Smit Lunagariya (1)
  • Henry Lunn (1) +
  • Marco Maggi (4)
  • Lauren Main (1) +
  • Martin Spišák (1) +
  • Mateusz Sokół (4)
  • Jan-Kristian Mathisen (1) +
  • Nikolay Mayorov (2)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (62)
  • João Mendes (10)
  • Gian Marco Messa (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Michał Górny (2)
  • Naoto Mizuno (2)
  • Nicolas Mokus (2)
  • musvaage (18) +
  • Andrew Nelson (88)
  • Jens Hedegaard Nielsen (1) +
  • Roman Nigmatullin (8) +
  • Nick ODell (37)
  • Yagiz Olmez (4)
  • Matti Picus (9)
  • Diogo Pires (5) +
  • Ilhan Polat (96)
  • Zachary Potthoff (1) +
  • Tom M. Ragonneau (2)
  • Peter Ralph (1) +
  • Stephan Rave (1) +
  • Tyler Reddy (192)
  • redha2404 (2) +
  • Ritvik1sharma (1) +
  • Érico Nogueira Rolim (1) +
  • Heshy Roskes (1)
  • Pamphile Roy (34)
  • Mikhail Ryazanov (1) +
  • Sina Saber (1) +
  • Atsushi Sakai (1)
  • Clemens Schmid (1) +
  • Daniel Schmitz (17)
  • Moritz Schreiber (1) +
  • Dan Schult (91)
  • Searchingdays (1) +
  • Matias Senger (1) +
  • Scott Shambaugh (1)
  • Zhida Shang (1) +
  • Sheila-nk (4)
  • Romain Simon (2) +
  • Gagandeep Singh (31)
  • Albert Steppi (40)
  • Kai Striega (1)
  • Anushka Suyal (143) +
  • Alex Szatmary (1)
  • Svetlin Tassev (1) +
  • Ewout ter Hoeven (1)
  • Tibor Völcker (4) +
  • Kanishk Tiwari (1) +
  • Yusuke Toyama (1) +
  • Edgar Andrés Margffoy Tuay (124)
  • Adam Turner (2) +
  • Nicole Vadot (1) +
  • Andrew Valentine (1)
  • Christian Veenhuis (2)
  • vfdev (2) +
  • Pauli Virtanen (2)
  • Simon Waldherr (1) +
  • Stefan van der Walt (2)
  • Warren Weckesser (23)
  • Anreas Weh (1)
  • Benoît Wygas (2) +
  • Pavadol Yamsiri (3) +
  • ysard (1) +
  • Xiao Yuan (2)
  • Irwin Zaid (12)
  • Gang Zhao (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (10)

A total of 149 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 1 year ago

scipy - SciPy 1.15.0rc2

SciPy 1.15.0 Release Notes

Note: SciPy 1.15.0 is not released yet!

SciPy 1.15.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.15.x branch, and on adding new features on the main branch.

This release requires Python 3.10-3.13 and NumPy 1.23.5 or greater.

Highlights of this release

  • Sparse arrays are now fully functional for 1-D and 2-D arrays. We recommend that all new code use sparse arrays instead of sparse matrices and that developers start to migrate their existing code from sparse matrix to sparse array: migration_to_sparray. Both sparse.linalg and sparse.csgraph work with either sparse matrix or sparse array and work internally with sparse array.
  • Sparse arrays now provide basic support for n-D arrays in the COO format including add, subtract, reshape, transpose, matmul, dot, tensordot and others. More functionality is coming in future releases.
  • Preliminary support for free-threaded Python 3.13.
  • New probability distribution features in scipy.stats can be used to improve the speed and accuracy of existing continuous distributions and perform new probability calculations.
  • Several new features support vectorized calculations with Python Array API Standard compatible input (see "Array API Standard Support" below):

    • scipy.differentiate is a new top-level submodule for accurate estimation of derivatives of black box functions.
    • scipy.optimize.elementwise contains new functions for root-finding and minimization of univariate functions.
    • scipy.integrate offers new functions cubature, tanhsinh, and nsum for multivariate integration, univariate integration, and univariate series summation, respectively.
  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.

  • scipy.special adds new functions offering improved Legendre function implementations with a more consistent interface.

New features

scipy.differentiate introduction

The new scipy.differentiate sub-package contains functions for accurate estimation of derivatives of black box functions.

  • Use scipy.differentiate.derivative for first-order derivatives of scalar-in, scalar-out functions.
  • Use scipy.differentiate.jacobian for first-order partial derivatives of vector-in, vector-out functions.
  • Use scipy.differentiate.hessian for second-order partial derivatives of vector-in, scalar-out functions.

All functions use high-order finite difference rules with adaptive (real) step size. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below).

scipy.integrate improvements

  • The new scipy.integrate.cubature function supports multidimensional integration, and has support for approximating integrals with one or more sets of infinite limits.
  • scipy.integrate.tanhsinh is now exposed for public use, allowing evaluation of a convergent integral using tanh-sinh quadrature.
  • scipy.integrate.nsum evaluates finite and infinite series and their logarithms.
  • scipy.integrate.lebedev_rule computes abscissae and weights for integration over the surface of a sphere.
  • The QUADPACK Fortran77 package has been ported to C.

scipy.interpolate improvements

  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.
  • scipy.interpolate.FloaterHormannInterpolator adds barycentric rational interpolation.
  • New functions scipy.interpolate.make_splrep and scipy.interpolate.make_splprep implement construction of smoothing splines. The algorithmic content is equivalent to FITPACK (splrep and splprep functions, and *UnivariateSpline classes) and the user API is consistent with make_interp_spline: these functions receive data arrays and return a scipy.interpolate.BSpline instance.
  • New generator function scipy.interpolate.generate_knots implements the FITPACK strategy for selecting knots of a smoothing spline given the smoothness parameter, s. The function exposes the internal logic of knot selection that splrep and *UnivariateSpline was using.

scipy.linalg improvements

  • scipy.linalg.interpolative Fortran77 code has been ported to Cython.
  • scipy.linalg.solve supports several new values for the assume_a argument, enabling faster computation for diagonal, tri-diagonal, banded, and triangular matrices. Also, when assume_a is left unspecified, the function now automatically detects and exploits diagonal, tri-diagonal, and triangular structures.
  • scipy.linalg matrix creation functions (scipy.linalg.circulant, scipy.linalg.companion, scipy.linalg.convolution_matrix, scipy.linalg.fiedler, scipy.linalg.fiedler_companion, and scipy.linalg.leslie) now support batch matrix creation.
  • scipy.linalg.funm is faster.
  • scipy.linalg.orthogonal_procrustes now supports complex input.
  • Wrappers for the following LAPACK routines have been added in scipy.linalg.lapack: ?lantr, ?sytrs, ?hetrs, ?trcon, and ?gtcon.
  • scipy.linalg.expm was rewritten in C.
  • scipy.linalg.null_space now accepts the new arguments overwrite_a, check_finite, and lapack_driver.
  • id_dist Fortran code was rewritten in Cython.

scipy.ndimage improvements

  • Several additional filtering functions now support an axes argument that specifies which axes of the input filtering is to be performed on. These include correlate, convolve, generic_laplace, laplace, gaussian_laplace, derivative2, generic_gradient_magnitude, gaussian_gradient_magnitude and generic_filter.
  • The binary and grayscale morphology functions now support an axes argument that specifies which axes of the input filtering is to be performed on.
  • scipy.ndimage.rank_filter time complexity has improved from n to log(n).

scipy.optimize improvements

  • The vendored HiGHS library has been upgraded from 1.4.0 to 1.8.0, bringing accuracy and performance improvements to solvers.
  • The MINPACK Fortran77 package has been ported to C.
  • The L-BFGS-B Fortran77 package has been ported to C.
  • The new scipy.optimize.elementwise namespace includes functions bracket_root, find_root, bracket_minimum, and find_minimum for root-finding and minimization of univariate functions. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below). Compared to existing functions (e.g. scipy.optimize.root_scalar and scipy.optimize.minimize_scalar), these functions can offer speedups of over 100x when used with NumPy arrays, and even greater gains are possible with other Array API Standard compatible array libraries (e.g. CuPy).
  • scipy.optimize.differential_evolution now supports more general use of workers, such as passing a map-like callable.
  • scipy.optimize.nnls was rewritten in Cython.
  • HessianUpdateStrategy now supports __matmul__.

scipy.signal improvements

  • Add functionality of complex-valued waveforms to signal.chirp().
  • scipy.signal.lombscargle has two new arguments, weights and floating_mean, enabling sample weighting and removal of an unknown y-offset independently for each frequency. Additionally, the normalize argument includes a new option to return the complex representation of the amplitude and phase.
  • New function scipy.signal.envelope for computation of the envelope of a real or complex valued signal.

scipy.sparse improvements

  • A migration guide is now available for moving from sparse.matrix to sparse.array in your code/library.
  • Sparse arrays now support indexing for 1-D and 2-D arrays. So, sparse arrays are now fully functional for 1-D and 2D.
  • n-D sparse arrays in COO format can now be constructed, reshaped and used for basic arithmetic.
  • New functions sparse.linalg.is_sptriangular and sparse.linalg.spbandwidth mimic the existing dense tools linalg.is_triangular and linalg.bandwidth.
  • sparse.linalg and sparse.csgraph now work with sparse arrays. Be careful that your index arrays are 32-bit. We are working on 64bit support.
  • The vendored ARPACK library has been upgraded to version 3.9.1.
  • COO, CSR, CSC and LIL formats now support the axis argument for count_nonzero.
  • Sparse arrays and matrices may now raise errors when initialized with incompatible data types, such as float16.
  • min, max, argmin, and argmax now support computation over nonzero elements only via the new explicit argument.
  • New functions get_index_dtype and safely_cast_index_arrays are available to facilitate index array casting in sparse.

scipy.spatial improvements

  • Rotation.concatenate now accepts a bare Rotation object, and will return a copy of it.

scipy.special improvements

  • New functions offering improved Legendre function implementations with a more consistent interface. See respective docstrings for more information.

    • scipy.special.legendre_p, scipy.special.legendre_p_all
    • scipy.special.assoc_legendre_p, scipy.special.assoc_legendre_p_all
    • scipy.special.sph_harm_y, scipy.special.sph_harm_y_all
    • scipy.special.sph_legendre_p, scipy.special.sph_legendre_p_all,
  • The factorial functions special.{factorial,factorial2,factorialk} now offer an extension to the complex domain by passing the kwarg extend='complex'. This is opt-in because it changes the values for negative inputs (which by default return 0), as well as for some integers (in the case of factorial2 and factorialk; for more details, check the respective docstrings).

  • scipy.special.zeta now defines the Riemann zeta function on the complex plane.

  • scipy.special.softplus computes the softplus function

  • The spherical Bessel functions (scipy.special.spherical_jn, scipy.special.spherical_yn, scipy.special.spherical_in, and scipy.special.spherical_kn) now support negative arguments with real dtype.

  • scipy.special.logsumexp now preserves precision when one element of the sum has magnitude much bigger than the rest.

  • The accuracy of several functions has been improved:

    • scipy.special.ncfdtr, scipy.special.nctdtr, and scipy.special.gdtrib have been improved throughout the domain.
    • scipy.special.hyperu is improved for the case of b=1, small x, and small a.
    • scipy.special.logit is improved near the argument p=0.5.
    • scipy.special.rel_entr is improved when x/y overflows, underflows, or is close to 1.
  • scipy.special.ndtr is now more efficient for sqrt(2)/2 < |x| < 1.

scipy.stats improvements

  • A new probability distribution infrastructure has been added for the implementation of univariate, continuous distributions. It has several speed, accuracy, memory, and interface advantages compared to the previous infrastructure. See rv_infrastructure for a tutorial.

    • Use scipy.stats.make_distribution to treat an existing continuous distribution (e.g. scipy.stats.norm) with the new infrastructure. This can improve the speed and accuracy of existing distributions, especially those with methods not overridden with distribution-specific formulas.
    • scipy.stats.Normal and scipy.stats.Uniform are pre-defined classes to represent the normal and uniform distributions, respectively. Their interfaces may be faster and more convenient than those produced by make_distribution.
    • scipy.stats.Mixture can be used to represent mixture distributions.
  • Instances of scipy.stats.Normal, scipy.stats.Uniform, and the classes returned by scipy.stats.make_distribution are supported by several new mathematical transformations.

    • scipy.stats.truncate for truncation of the support.
    • scipy.stats.order_statistic for the order statistics of a given number of IID random variables.
    • scipy.stats.abs, scipy.stats.exp, and scipy.stats.log. For example, scipy.stats.abs(Normal()) is distributed according to the folded normal and scipy.stats.exp(Normal()) is lognormally distributed.
  • The new scipy.stats.lmoment calculates sample l-moments and l-moment ratios. Notably, these sample estimators are unbiased.

  • scipy.stats.chatterjeexi computes the Xi correlation coefficient, which can detect nonlinear dependence. The function also performs a hypothesis test of independence between samples.

  • scipy.stats.wilcoxon has improved method resolution logic for the default method='auto'. Other values of method provided by the user are now respected in all cases, and the method argument approx has been renamed to asymptotic for consistency with similar functions. (Use of approx is still allowed for backward compatibility.)

  • There are several new probability distributions:

    • scipy.stats.dpareto_lognorm represents the double Pareto lognormal distribution.
    • scipy.stats.landau represents the Landau distribution.
    • scipy.stats.normal_inverse_gamma represents the normal-inverse-gamma distribution.
    • scipy.stats.poisson_binom represents the Poisson binomial distribution.
  • Batch calculation with scipy.stats.alexandergovern and scipy.stats.combine_pvalues is faster.

  • scipy.stats.chisquare added an argument sum_check. By default, the function raises an error when the sum of expected and obseved frequencies are not equal; setting sum_check=False disables this check to facilitate hypothesis tests other than Pearson's chi-squared test.

  • The accuracy of several distribution methods has been improved, including:

    • scipy.stats.nct method pdf
    • scipy.stats.crystalball method sf
    • scipy.stats.geom method rvs
    • scipy.stats.cauchy methods logpdf, pdf, ppf and isf
    • The logcdf and/or logsf methods of distributions that do not override the generic implementation of these methods, including scipy.stats.beta, scipy.stats.betaprime, scipy.stats.cauchy, scipy.stats.chi, scipy.stats.chi2, scipy.stats.exponweib, scipy.stats.gamma, scipy.stats.gompertz, scipy.stats.halflogistic, scipy.stats.hypsecant, scipy.stats.invgamma, scipy.stats.laplace, scipy.stats.levy, scipy.stats.loggamma, scipy.stats.maxwell, scipy.stats.nakagami, and scipy.stats.t.
  • scipy.stats.qmc.PoissonDisk now accepts lower and upper bounds parameters l_bounds and u_bounds.

  • scipy.stats.fisher_exact now supports two-dimensional tables with shapes other than (2, 2).

Preliminary Support for Free-Threaded CPython 3.13

SciPy 1.15 has preliminary support for the free-threaded build of CPython 3.13. This allows SciPy functionality to execute in parallel with Python threads (see the threading stdlib module). This support was enabled by fixing a significant number of thread-safety issues in both pure Python and C/C++/Cython/Fortran extension modules. Wheels are provided on PyPI for this release; NumPy >=2.1.3 is required at runtime. Note that building for a free-threaded interpreter requires a recent pre-release or nightly for Cython 3.1.0.

Support for free-threaded Python does not mean that SciPy is fully thread-safe. Please see scipy_thread_safety for more details.

If you are interested in free-threaded Python, for example because you have a multiprocessing-based workflow that you are interested in running with Python threads, we encourage testing and experimentation. If you run into problems that you suspect are because of SciPy, please open an issue, checking first if the bug also occurs in the "regular" non-free-threaded CPython 3.13 build. Many threading bugs can also occur in code that releases the GIL; disabling the GIL only makes it easier to hit threading bugs.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, ndonnx, or CuPy arrays as array arguments. Features with support added for SciPy 1.15.0 include:

  • All functions in scipy.differentiate (new sub-package)
  • All functions in scipy.optimize.elementwise (new namespace)
  • scipy.optimize.rosen, scipy.optimize.rosen_der, and scipy.optimize.rosen_hess
  • scipy.special.logsumexp
  • scipy.integrate.trapezoid
  • scipy.integrate.tanhsinh (newly public function)
  • scipy.integrate.cubature (new function)
  • scipy.integrate.nsum (new function)
  • scipy.special.chdtr, scipy.special.betainc, and scipy.special.betaincc
  • scipy.stats.boxcox_llf
  • scipy.stats.differential_entropy
  • scipy.stats.zmap, scipy.stats.zscore, and scipy.stats.gzscore
  • scipy.stats.tmean, scipy.stats.tvar, scipy.stats.tstd, scipy.stats.tsem, scipy.stats.tmin, and scipy.stats.tmax
  • scipy.stats.gmean, scipy.stats.hmean and scipy.stats.pmean
  • scipy.stats.combine_pvalues
  • scipy.stats.ttest_ind, scipy.stats.ttest_rel
  • scipy.stats.directional_stats
  • scipy.ndimage functions will now delegate to cupyx.scipy.ndimage, and for other backends will transit via NumPy arrays on the host.

Deprecated features

  • Functions scipy.linalg.interpolative.rand and scipy.linalg.interpolative.seed have been deprecated and will be removed in SciPy 1.17.0.
  • Complex inputs to scipy.spatial.distance.cosine and scipy.spatial.distance.correlation have been deprecated and will raise an error in SciPy 1.17.0.
  • scipy.spatial.distance.kulczynski1 and scipy.spatial.distance.sokalmichener were deprecated and will be removed in SciPy 1.17.0.
  • scipy.stats.find_repeats is deprecated as of SciPy 1.15.0 and will be removed in SciPy 1.17.0. Please use numpy.unique/numpy.unique_counts instead.
  • scipy.linalg.kron is deprecated in favour of numpy.kron.
  • Using object arrays and longdouble arrays in scipy.signal convolution/correlation functions (scipy.signal.correlate, scipy.signal.convolve and scipy.signal.choose_conv_method) and filtering functions (scipy.signal.lfilter, scipy.signal.sosfilt) has been deprecated as of SciPy 1.15.0 and will be removed in SciPy 1.17.0.
  • scipy.stats.linregress has deprecated one-argument use; the two variables must be specified as separate arguments.
  • scipy.stats.trapz is deprecated in favor of scipy.stats.trapezoid.
  • scipy.special.lpn is deprecated in favor of scipy.special.legendre_p_all.
  • scipy.special.lpmn and scipy.special.clpmn are deprecated in favor of scipy.special.assoc_legendre_p_all.
  • scipy.special.sph_harm has been deprecated in favor of scipy.special.sph_harm_y.
  • The raveling of multi-dimensional input by scipy.linalg.toeplitz has been deprecated. It will support batching in SciPy 1.17.0.
  • The random_state and permutations arguments of scipy.stats.ttest_ind are deprecated. Use method to perform a permutation test, instead.

Expired Deprecations

  • The wavelet functions in scipy.signal have been removed. This includes daub, qmf, cascade, morlet, morlet2, ricker, and cwt. Users should use pywavelets instead.
  • scipy.signal.cmplx_sort has been removed.
  • scipy.integrate.quadrature and scipy.integrate.romberg have been removed in favour of scipy.integrate.quad.
  • scipy.stats.rvs_ratio_uniforms has been removed in favor of scipy.stats.sampling.RatioUniforms.
  • scipy.special.factorial now raises an error for non-integer scalars when exact=True.
  • scipy.integrate.cumulative_trapezoid now raises an error for values of initial other than 0 and None.
  • Complex dtypes now raise an error in scipy.interpolate.Akima1DInterpolator and scipy.interpolate.PchipInterpolator
  • special.btdtr and special.btdtri have been removed.
  • The default of the exact= kwarg in special.factorialk has changed from True to False.
  • All functions in the scipy.misc submodule have been removed.

Backwards incompatible changes

  • interpolate.BSpline.integrate output is now always a numpy array. Previously, for 1D splines the output was a python float or a 0D array depending on the value of the extrapolate argument.
  • scipy.stats.wilcoxon now respects the method argument provided by the user. Previously, even if method='exact' was specified, the function would resort to method='approx' in some cases.
  • scipy.integrate.AccuracyWarning has been removed as the functions the warning was emitted from (scipy.integrate.quadrature and scipy.integrate.romberg) have been removed.

Other changes

  • A separate accompanying type stubs package, scipy-stubs, will be made available with the 1.15.0 release. Installation instructions are available.
  • scipy.stats.bootstrap now emits a FutureWarning if the shapes of the input arrays do not agree. Broadcast the arrays to the same batch shape (i.e. for all dimensions except those specified by the axis argument) to avoid the warning. Broadcasting will be performed automatically in the future.
  • SciPy endorsed SPEC-7, which proposes a rng argument to control pseudorandom number generation (PRNG) in a standard way, replacing legacy arguments like seed and random_sate. In many cases, use of rng will change the behavior of the function unless the argument is already an instance of numpy.random.Generator.

    • Effective in SciPy 1.15.0:
    • The rng argument has been added to the following functions: scipy.cluster.vq.kmeans, scipy.cluster.vq.kmeans2, scipy.interpolate.BarycentricInterpolator, scipy.interpolate.barycentric_interpolate, scipy.linalg.clarkson_woodruff_transform, scipy.optimize.basinhopping, scipy.optimize.differential_evolution, scipy.optimize.dual_annealing, scipy.optimize.check_grad, scipy.optimize.quadratic_assignment, scipy.sparse.random, scipy.sparse.random_array, scipy.sparse.rand, scipy.sparse.linalg.svds, scipy.spatial.transform.Rotation.random, scipy.spatial.distance.directed_hausdorff, scipy.stats.goodness_of_fit, scipy.stats.BootstrapMethod, scipy.stats.PermutationMethod, scipy.stats.bootstrap, scipy.stats.permutation_test, scipy.stats.dunnett, all scipy.stats.qmc classes that consume random numbers, and scipy.stats.sobol_indices.
    • When passed by keyword, the rng argument will follow the SPEC 7 standard behavior: the argument will be normalized with np.random.default_rng before being used.
    • When passed by position or legacy keyword, the behavior of the argument will remain unchanged (for now).
    • It is planned that in 1.17.0 the legacy argument will start emitting warnings, and that in 1.19.0 the default behavior will change.
    • In all cases, users can avoid future disruption by proactively passing an instance of np.random.Generator by keyword rng. For details, see SPEC-7.
  • The SciPy build no longer adds -std=legacy for Fortran code, except when using Gfortran. This avoids problems with the new Flang and AMD Fortran compilers. It may make new build warnings appear for other compilers - if so, please file an issue.

  • scipy.signal.sosfreqz has been renamed to scipy.signal.freqz_sos. New code should use the new name. The old name is maintained as an alias for backwards compatibility.

  • Testing thread-safety improvements related to Python 3.13t have been made in: scipy.special, scipy.spatial, scipy.sparse, scipy.interpolate.

Authors (commits)

  • endolith (4)
  • h-vetinari (62)
  • a-drenaline (1) +
  • Afleloup (1) +
  • Ahmad Alkadri (1) +
  • Luiz Eduardo Amaral (3) +
  • Virgile Andreani (3)
  • Isaac Alonso Asensio (2) +
  • Matteo Bachetti (1) +
  • Arash Badie-Modiri (1) +
  • Arnaud Baguet (1) +
  • Soutrik Bandyopadhyay (1) +
  • Ankit Barik (1) +
  • Christoph Baumgarten (1)
  • Nickolai Belakovski (3)
  • Krishan Bhasin (1) +
  • Jake Bowhay (89)
  • Michael Bratsch (2) +
  • Matthew Brett (1)
  • Keith Briggs (1) +
  • Olly Britton (145) +
  • Dietrich Brunn (11)
  • Clemens Brunner (1)
  • Evgeni Burovski (185)
  • Matthias Bussonnier (7)
  • CJ Carey (32)
  • Cesar Carrasco (4) +
  • Hood Chatham (1)
  • Aadya Chinubhai (1)
  • Alessandro Chitarrini (1) +
  • Thibault de Coincy (1) +
  • Lucas Colley (217)
  • Martin Diehl (1) +
  • Djip007 (1) +
  • Kevin Doshi (2) +
  • Michael Dunphy (2)
  • Andy Everall (1) +
  • Thomas J. Fan (2)
  • fancidev (60)
  • Sergey Fedorov (2) +
  • Sahil Garje (1) +
  • Gabriel Gerlero (2)
  • Yotam Gingold (1) +
  • Ralf Gommers (110)
  • Rohit Goswami (62)
  • Anil Gurses (1) +
  • Oscar Gustafsson (1) +
  • Matt Haberland (389)
  • Matt Hall (1) +
  • Joren Hammudoglu (6) +
  • CY Han (1) +
  • Daniel Isaac (4) +
  • Maxim Ivanov (1)
  • Jakob Jakobson (2)
  • Janez Demšar (4) +
  • Chris Jerdonek (2) +
  • Adam Jones (4) +
  • Aditi Juneja (1) +
  • Nuri Jung (1) +
  • Guus Kamphuis (1) +
  • Aditya Karumanchi (2) +
  • Robert Kern (5)
  • Agriya Khetarpal (11)
  • Andrew Knyazev (7)
  • Gideon Genadi Kogan (1) +
  • Damien LaRocque (1) +
  • Eric Larson (10)
  • Gregory R. Lee (4)
  • Linfye (1) +
  • Boyu Liu (1) +
  • Drew Allan Loney (1) +
  • Christian Lorentzen (1)
  • Loïc Estève (2)
  • Smit Lunagariya (1)
  • Henry Lunn (1) +
  • Marco Maggi (4)
  • Lauren Main (1) +
  • Martin Spišák (1) +
  • Mateusz Sokół (4)
  • Jan-Kristian Mathisen (1) +
  • Nikolay Mayorov (2)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (62)
  • João Mendes (10)
  • Gian Marco Messa (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Michał Górny (2)
  • Naoto Mizuno (2)
  • Nicolas Mokus (2)
  • musvaage (18) +
  • Andrew Nelson (88)
  • Jens Hedegaard Nielsen (1) +
  • Roman Nigmatullin (8) +
  • Nick ODell (37)
  • Yagiz Olmez (4)
  • Matti Picus (9)
  • Diogo Pires (5) +
  • Ilhan Polat (96)
  • Zachary Potthoff (1) +
  • Tom M. Ragonneau (2)
  • Peter Ralph (1) +
  • Stephan Rave (1) +
  • Tyler Reddy (182)
  • redha2404 (2) +
  • Ritvik1sharma (1) +
  • Érico Nogueira Rolim (1) +
  • Heshy Roskes (1)
  • Pamphile Roy (34)
  • Mikhail Ryazanov (1) +
  • Sina Saber (1) +
  • Atsushi Sakai (1)
  • Clemens Schmid (1) +
  • Daniel Schmitz (17)
  • Moritz Schreiber (1) +
  • Dan Schult (91)
  • Searchingdays (1) +
  • Matias Senger (1) +
  • Scott Shambaugh (1)
  • Zhida Shang (1) +
  • Sheila-nk (4)
  • Romain Simon (2) +
  • Gagandeep Singh (31)
  • Albert Steppi (40)
  • Kai Striega (1)
  • Anushka Suyal (143) +
  • Alex Szatmary (1)
  • Svetlin Tassev (1) +
  • Ewout ter Hoeven (1)
  • Tibor Völcker (4) +
  • Kanishk Tiwari (1) +
  • Yusuke Toyama (1) +
  • Edgar Andrés Margffoy Tuay (124)
  • Adam Turner (2) +
  • Nicole Vadot (1) +
  • Andrew Valentine (1)
  • Christian Veenhuis (2)
  • vfdev (2) +
  • Pauli Virtanen (2)
  • Simon Waldherr (1) +
  • Stefan van der Walt (2)
  • Warren Weckesser (23)
  • Anreas Weh (1)
  • Benoît Wygas (2) +
  • Pavadol Yamsiri (3) +
  • ysard (1) +
  • Xiao Yuan (2)
  • Irwin Zaid (12)
  • Gang Zhao (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (10)

A total of 149 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 1 year ago

scipy - SciPy 1.15.0rc1

SciPy 1.15.0 Release Notes

Note: SciPy 1.15.0 is not released yet!

SciPy 1.15.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.15.x branch, and on adding new features on the main branch.

This release requires Python 3.10-3.13 and NumPy 1.23.5 or greater.

Highlights of this release

  • Sparse arrays are now fully functional for 1-D and 2-D arrays. We recommend that all new code use sparse arrays instead of sparse matrices and that developers start to migrate their existing code from sparse matrix to sparse array: migration_to_sparray. Both sparse.linalg and sparse.csgraph work with either sparse matrix or sparse array and work internally with sparse array.
  • Sparse arrays now provide basic support for n-D arrays in the COO format including add, subtract, reshape, transpose, matmul, dot, tensordot and others. More functionality is coming in future releases.
  • Preliminary support for free-threaded Python 3.13.
  • New probability distribution features in scipy.stats can be used to improve the speed and accuracy of existing continuous distributions and perform new probability calculations.
  • scipy.differentiate is a new top-level submodule for accurate estimation of derivatives of black box functions.
  • scipy.optimize.elementwise provides vectorized root-finding and minimization of univariate functions, and it supports the array API as do new integrate functions tanhsinh, nsum, and cubature.
  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.

New features

scipy.differentiate introduction

The new scipy.differentiate sub-package contains functions for accurate estimation of derivatives of black box functions.

  • Use scipy.differentiate.derivative for first-order derivatives of scalar-in, scalar-out functions.
  • Use scipy.differentiate.jacobian for first-order partial derivatives of vector-in, vector-out functions.
  • Use scipy.differentiate.hessian for second-order partial derivatives of vector-in, scalar-out functions.

All functions use high-order finite difference rules with adaptive (real) step size. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below).

scipy.integrate improvements

  • The QUADPACK Fortran77 package has been ported to C.
  • scipy.integrate.lebedev_rule computes abscissae and weights for integration over the surface of a sphere.
  • scipy.integrate.nsum evaluates finite and infinite series and their logarithms.
  • scipy.integrate.tanhsinh is now exposed for public use, allowing evaluation of a convergent integral using tanh-sinh quadrature.
  • The new scipy.integrate.cubature function supports multidimensional integration, and has support for approximating integrals with one or more sets of infinite limits.

scipy.interpolate improvements

  • scipy.interpolate.AAA adds the AAA algorithm for barycentric rational approximation of real or complex functions.
  • scipy.interpolate.FloaterHormannInterpolator adds barycentric rational interpolation.
  • New functions scipy.interpolate.make_splrep and scipy.interpolate.make_splprep implement construction of smoothing splines. The algorithmic content is equivalent to FITPACK (splrep and splprep functions, and *UnivariateSpline classes) and the user API is consistent with make_interp_spline: these functions receive data arrays and return a scipy.interpolate.BSpline instance.
  • New generator function scipy.interpolate.generate_knots implements the FITPACK strategy for selecting knots of a smoothing spline given the smoothness parameter, s. The function exposes the internal logic of knot selection that splrep and *UnivariateSpline was using.

scipy.linalg improvements

  • scipy.linalg.interpolative Fortran77 code has been ported to Cython.
  • scipy.linalg.solve supports several new values for the assume_a argument, enabling faster computation for diagonal, tri-diagonal, banded, and triangular matrices. Also, when assume_a is left unspecified, the function now automatically detects and exploits diagonal, tri-diagonal, and triangular structures.
  • scipy.linalg matrix creation functions (scipy.linalg.circulant, scipy.linalg.companion, scipy.linalg.convolution_matrix, scipy.linalg.fiedler, scipy.linalg.fiedler_companion, and scipy.linalg.leslie) now support batch matrix creation.
  • scipy.linalg.funm is faster.
  • scipy.linalg.orthogonal_procrustes now supports complex input.
  • Wrappers for the following LAPACK routines have been added in scipy.linalg.lapack: ?lantr, ?sytrs, ?hetrs, ?trcon, and ?gtcon.
  • scipy.linalg.expm was rewritten in C.
  • scipy.linalg.null_space now accepts the new arguments overwrite_a, check_finite, and lapack_driver.
  • id_dist Fortran code was rewritten in Cython.

scipy.ndimage improvements

  • Several additional filtering functions now support an axes argument that specifies which axes of the input filtering is to be performed on. These include correlate, convolve, generic_laplace, laplace, gaussian_laplace, derivative2, generic_gradient_magnitude, gaussian_gradient_magnitude and generic_filter.
  • The binary and grayscale morphology functions now support an axes argument that specifies which axes of the input filtering is to be performed on.
  • scipy.ndimage.rank_filter time complexity has improved from n to log(n).

scipy.optimize improvements

  • The vendored HiGHS library has been upgraded from 1.4.0 to 1.8.0, bringing accuracy and performance improvements to solvers.
  • The MINPACK Fortran77 package has been ported to C.
  • The L-BFGS-B Fortran77 package has been ported to C.
  • The new scipy.optimize.elementwise namespace includes functions bracket_root, find_root, bracket_minimum, and find_minimum for root-finding and minimization of univariate functions. To facilitate batch computation, these functions are vectorized and support several Array API compatible array libraries in addition to NumPy (see "Array API Standard Support" below). Compared to existing functions (e.g. scipy.optimize.root_scalar and scipy.optimize.minimize_scalar), these functions can offer speedups of over 100x when used with NumPy arrays, and even greater gains are possible with other Array API Standard compatible array libraries (e.g. CuPy).
  • scipy.optimize.differential_evolution now supports more general use of workers, such as passing a map-like callable.
  • scipy.optimize.nnls was rewritten in Cython.
  • HessianUpdateStrategy now supports __matmul__.

scipy.signal improvements

  • Add functionality of complex-valued waveforms to signal.chirp().
  • scipy.signal.lombscargle has two new arguments, weights and floating_mean, enabling sample weighting and removal of an unknown y-offset independently for each frequency. Additionally, the normalize argument includes a new option to return the complex representation of the amplitude and phase.
  • New function scipy.signal.envelope for computation of the envelope of a real or complex valued signal.

scipy.sparse improvements

  • A :ref:migration guide<migration_to_sparray> is now available for moving from sparse.matrix to sparse.array in your code/library.
  • Sparse arrays now support indexing for 1-D and 2-D arrays. So, sparse arrays are now fully functional for 1-D and 2D.
  • n-D sparse arrays in COO format can now be constructed, reshaped and used for basic arithmetic.
  • New functions sparse.linalg.is_sptriangular and sparse.linalg.spbandwidth mimic the existing dense tools linalg.is_triangular and linalg.bandwidth.
  • sparse.linalg and sparse.csgraph now work with sparse arrays. Be careful that your index arrays are 32-bit. We are working on 64bit support.
  • The vendored ARPACK library has been upgraded to version 3.9.1.
  • COO, CSR, CSC and LIL formats now support the axis argument for count_nonzero.
  • Sparse arrays and matrices may now raise errors when initialized with incompatible data types, such as float16.
  • min, max, argmin, and argmax now support computation over nonzero elements only via the new explicit argument.
  • New functions get_index_dtype and safely_cast_index_arrays are available to facilitate index array casting in sparse.

scipy.spatial improvements

  • Rotation.concatenate now accepts a bare Rotation object, and will return a copy of it.

scipy.special improvements

  • The factorial functions special.{factorial,factorial2,factorialk} now offer an extension to the complex domain by passing the kwarg extend='complex'. This is opt-in because it changes the values for negative inputs (which by default return 0), as well as for some integers (in the case of factorial2 and factorialk; for more details, check the respective docstrings).
  • scipy.special.zeta now defines the Riemann zeta function on the complex plane.
  • scipy.special.softplus computes the softplus function
  • The spherical Bessel functions (scipy.special.spherical_jn, scipy.special.spherical_yn, scipy.special.spherical_in, and scipy.special.spherical_kn) now support negative arguments with real dtype.
  • scipy.special.logsumexp now preserves precision when one element of the sum has magnitude much bigger than the rest.
  • The accuracy of several functions has been improved:

    • scipy.special.ncfdtr and scipy.special.nctdtr have been improved throughout the domain.
    • scipy.special.hyperu is improved for the case of b=1, small x, and small a.
    • scipy.special.logit is improved near the argument p=0.5.
    • scipy.special.rel_entr is improved when x/y overflows, underflows, or is close to 1.
  • scipy.special.gdtrib may now be used in a CuPy ElementwiseKernel on GPUs.

  • scipy.special.ndtr is now more efficient.

scipy.stats improvements

  • A new probability distribution infrastructure has been added for the implementation of univariate, continuous distributions with speed, accuracy, and memory advantages:

    • scipy.stats.Normal represents the normal distribution with the new interface. In typical cases, its methods are faster and more accurate than those of scipy.stats.norm.
    • Use scipy.stats.make_distribution to treat an existing continuous distribution (e.g. scipy.stats.norm) with the new infrastructure. This can improve the speed and accuracy of existing distributions, especially for methods not overridden with custom formulas in the implementation.
  • scipy.stats.Mixture has been added to represent mixture distributions.

  • Instances of scipy.stats.Normal and the classes returned by scipy.stats.make_distribution are supported by several new mathematical transformations.

    • scipy.stats.truncate for truncation of the support.
    • scipy.stats.order_statistic for the order statistics of a given number of IID random variables.
    • scipy.stats.abs, scipy.stats.exp, and scipy.stats.log. For example, scipy.stats.abs(Normal()) is distributed according to the folded normal and scipy.stats.exp(Normal()) is lognormally distributed.
  • The new scipy.stats.lmoment calculates sample l-moments and l-moment ratios. Notably, these sample estimators are unbiased.

  • scipy.stats.chatterjeexi computes the Xi correlation coefficient, which can detect nonlinear dependence. The function also performs a hypothesis test of independence between samples.

  • scipy.stats.wilcoxon has improved method resolution logic for the default method='auto'. Other values of method provided by the user are now respected in all cases, and the method argument approx has been renamed to asymptotic for consistency with similar functions. (Use of approx is still allowed for backward compatibility.)

  • There are several new probability distributions:

    • scipy.stats.dpareto_lognorm represents the double Pareto lognormal distribution.
    • scipy.stats.landau represents the Landau distribution.
    • scipy.stats.normal_inverse_gamma represents the normal-inverse-gamma distribution.
    • scipy.stats.poisson_binom represents the Poisson binomial distribution.
  • Batch calculation with scipy.stats.alexandergovern and scipy.stats.combine_pvalues is faster.

  • scipy.stats.chisquare added an argument sum_check. By default, the function raises an error when the sum of expected and obseved frequencies are not equal; setting sum_check=False disables this check to facilitate hypothesis tests other than Pearson's chi-squared test.

  • The accuracy of several distribution methods has been improved, including:

    • scipy.stats.nct method pdf
    • scipy.stats.crystalball method sf
    • scipy.stats.geom method rvs
    • scipy.stats.cauchy methods logpdf, pdf, ppf and isf
    • The logcdf and/or logsf methods of distributions that do not override the generic implementation of these methods, including scipy.stats.beta, scipy.stats.betaprime, scipy.stats.cauchy, scipy.stats.chi, scipy.stats.chi2, scipy.stats.exponweib, scipy.stats.gamma, scipy.stats.gompertz, scipy.stats.halflogistic, scipy.stats.hypsecant, scipy.stats.invgamma, scipy.stats.laplace, scipy.stats.levy, scipy.stats.loggamma, scipy.stats.maxwell, scipy.stats.nakagami, and scipy.stats.t.
  • scipy.stats.qmc.PoissonDisk now accepts lower and upper bounds parameters l_bounds and u_bounds.

  • scipy.stats.fisher_exact now supports two-dimensional tables with shapes other than (2, 2).

Preliminary Support for Free-Threaded CPython 3.13

SciPy 1.15 has preliminary support for the free-threaded build of CPython 3.13. This allows SciPy functionality to execute in parallel with Python threads (see the threading stdlib module). This support was enabled by fixing a significant number of thread-safety issues in both pure Python and C/C++/Cython/Fortran extension modules. Wheels are provided on PyPI for this release; NumPy >=2.1.3 is required at runtime. Note that building for a free-threaded interpreter requires a recent pre-release or nightly for Cython 3.1.0.

Support for free-threaded Python does not mean that SciPy is fully thread-safe. Please see :ref:scipy_thread_safety for more details.

If you are interested in free-threaded Python, for example because you have a multiprocessing-based workflow that you are interested in running with Python threads, we encourage testing and experimentation. If you run into problems that you suspect are because of SciPy, please open an issue, checking first if the bug also occurs in the "regular" non-free-threaded CPython 3.13 build. Many threading bugs can also occur in code that releases the GIL; disabling the GIL only makes it easier to hit threading bugs.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, ndonnx, or CuPy arrays as array arguments. Features with support added for SciPy 1.15.0 include:

  • All functions in scipy.differentiate (new sub-package)
  • All functions in scipy.optimize.elementwise (new namespace)
  • scipy.optimize.rosen, scipy.optimize.rosen_der, and scipy.optimize.rosen_hess
  • scipy.special.logsumexp
  • scipy.integrate.trapezoid
  • scipy.integrate.tanhsinh (newly public function)
  • scipy.integrate.cubature (new function)
  • scipy.integrate.nsum (new function)
  • scipy.special.chdtr, scipy.special.betainc, and scipy.special.betaincc
  • scipy.stats.boxcox_llf
  • scipy.stats.differential_entropy
  • scipy.stats.zmap, scipy.stats.zscore, and scipy.stats.gzscore
  • scipy.stats.tmean, scipy.stats.tvar, scipy.stats.tstd, scipy.stats.tsem, scipy.stats.tmin, and scipy.stats.tmax
  • scipy.stats.gmean, scipy.stats.hmean and scipy.stats.pmean
  • scipy.stats.combine_pvalues
  • scipy.stats.ttest_ind, scipy.stats.ttest_rel
  • scipy.stats.directional_stats
  • scipy.ndimage functions will now delegate to cupyx.scipy.ndimage, and for other backends will transit via NumPy arrays on the host.

Deprecated features

  • Functions scipy.linalg.interpolative.rand and scipy.linalg.interpolative.seed have been deprecated and will be removed in SciPy 1.17.0.
  • Complex inputs to scipy.spatial.distance.cosine and scipy.spatial.distance.correlation have been deprecated and will raise an error in SciPy 1.17.0.
  • scipy.spatial.distance.kulczynski1 and scipy.spatial.distance.sokalmichener were deprecated and will be removed in SciPy 1.17.0.
  • scipy.stats.find_repeats is deprecated as of SciPy 1.15.0 and will be removed in SciPy 1.17.0. Please use numpy.unique/numpy.unique_counts instead.
  • scipy.linalg.kron is deprecated in favour of numpy.kron.
  • Using object arrays and longdouble arrays in scipy.signal convolution/correlation functions (scipy.signal.correlate, scipy.signal.convolve and scipy.signal.choose_conv_method) and filtering functions (scipy.signal.lfilter, scipy.signal.sosfilt) has been deprecated as of SciPy 1.15.0 and will be removed in SciPy 1.17.0.
  • scipy.stats.linregress has deprecated one-argument use; the two variables must be specified as separate arguments.
  • scipy.stats.trapz is deprecated in favor of scipy.stats.trapezoid.
  • scipy.special.lpn is deprecated in favor of scipy.special.legendre_p_all.
  • scipy.special.lpmn and scipy.special.clpmn are deprecated in favor of scipy.special.assoc_legendre_p_all.
  • The raveling of multi-dimensional input by scipy.linalg.toeplitz has been deprecated. It will support batching in SciPy 1.17.0.
  • The random_state and permutations arguments of scipy.stats.ttest_ind are deprecated. Use method to perform a permutation test, instead.

Expired Deprecations

  • The wavelet functions in scipy.signal have been removed. This includes daub, qmf, cascade, morlet, morlet2, ricker, and cwt. Users should use pywavelets instead.
  • scipy.signal.cmplx_sort has been removed.
  • scipy.integrate.quadrature and scipy.integrate.romberg have been removed in favour of scipy.integrate.quad.
  • scipy.stats.rvs_ratio_uniforms has been removed in favor of scipy.stats.sampling.RatioUniforms.
  • scipy.special.factorial now raises an error for non-integer scalars when exact=True.
  • scipy.integrate.cumulative_trapezoid now raises an error for values of initial other than 0 and None.
  • Complex dtypes now raise an error in scipy.interpolate.Akima1DInterpolator and scipy.interpolate.PchipInterpolator
  • special.btdtr and special.btdtri have been removed.
  • The default of the exact= kwarg in special.factorialk has changed from True to False.
  • All functions in the scipy.misc submodule have been removed.

Backwards incompatible changes

  • interpolate.BSpline.integrate output is now always a numpy array. Previously, for 1D splines the output was a python float or a 0D array depending on the value of the extrapolate argument.
  • scipy.stats.wilcoxon now respects the method argument provided by the user. Previously, even if method='exact' was specified, the function would resort to method='approx' in some cases.

Other changes

  • A separate accompanying type stubs package, scipy-stubs, will be made available with the 1.15.0 release. Installation instructions are available <https://github.com/jorenham/scipy-stubs?tab=readme-ov-file#installation>_.
  • scipy.stats.bootstrap now emits a FutureWarning if the shapes of the input arrays do not agree. Broadcast the arrays to the same batch shape (i.e. for all dimensions except those specified by the axis argument) to avoid the warning. Broadcasting will be performed automatically in the future.
  • SciPy endorsed SPEC-7 <https://scientific-python.org/specs/spec-0007/>, which proposes a rng argument to control pseudorandom number generation (PRNG) in a standard way, replacing legacy arguments like seed and ``randomsate. In many cases, use ofrngwill change the behavior of the function unless the argument is already an instance of numpy.random.Generator``.

    • Effective in SciPy 1.15.0:
    • The rng argument has been added to the following functions: scipy.cluster.vq.kmeans, scipy.cluster.vq.kmeans2, scipy.interpolate.BarycentricInterpolator, scipy.interpolate.barycentric_interpolate, scipy.linalg.clarkson_woodruff_transform, scipy.optimize.basinhopping, scipy.optimize.differential_evolution, scipy.optimize.dual_annealing, scipy.optimize.check_grad, scipy.optimize.quadratic_assignment, scipy.sparse.random, scipy.sparse.random_array, scipy.sparse.rand, scipy.sparse.linalg.svds, scipy.spatial.transform.Rotation.random, scipy.spatial.distance.directed_hausdorff, scipy.stats.goodness_of_fit, scipy.stats.BootstrapMethod, scipy.stats.PermutationMethod, scipy.stats.bootstrap, scipy.stats.permutation_test, scipy.stats.dunnett, all scipy.stats.qmc classes that consume random numbers, and scipy.stats.sobol_indices.
    • When passed by keyword, the rng argument will follow the SPEC 7 standard behavior: the argument will be normalized with np.random.default_rng before being used.
    • When passed by position or legacy keyword, the behavior of the argument will remain unchanged (for now).
    • It is planned that in 1.17.0 the legacy argument will start emitting warnings, and that in 1.19.0 the default behavior will change.
    • In all cases, users can avoid future disruption by proactively passing an instance of np.random.Generator by keyword rng. For details, see SPEC-7 <https://scientific-python.org/specs/spec-0007/>_.
  • The SciPy build no longer adds -std=legacy for Fortran code, except when using Gfortran. This avoids problems with the new Flang and AMD Fortran compilers. It may make new build warnings appear for other compilers - if so, please file an issue.

  • scipy.signal.sosfreqz has been renamed to scipy.signal.freqz_sos. New code should use the new name. The old name is maintained as an alias for backwards compatibility.

  • Testing thread-safety improvements related to Python 3.13t have been made in: scipy.special, scipy.spatial, scipy.sparse, scipy.interpolate.

Authors (commits)

  • endolith (4)
  • h-vetinari (61)
  • a-drenaline (1) +
  • Afleloup (1) +
  • Ahmad Alkadri (1) +
  • Luiz Eduardo Amaral (3) +
  • Virgile Andreani (3)
  • Isaac Alonso Asensio (2) +
  • Matteo Bachetti (1) +
  • Arash Badie-Modiri (1) +
  • Arnaud Baguet (1) +
  • Soutrik Bandyopadhyay (1) +
  • Ankit Barik (1) +
  • Christoph Baumgarten (1)
  • Nickolai Belakovski (3)
  • Krishan Bhasin (1) +
  • Jake Bowhay (85)
  • Michael Bratsch (2) +
  • Matthew Brett (1)
  • Keith Briggs (1) +
  • Olly Britton (145) +
  • Dietrich Brunn (11)
  • Clemens Brunner (1)
  • Evgeni Burovski (182)
  • Matthias Bussonnier (7)
  • CJ Carey (32)
  • Cesar Carrasco (4) +
  • Hood Chatham (1)
  • Aadya Chinubhai (1)
  • Alessandro Chitarrini (1) +
  • Thibault de Coincy (1) +
  • Lucas Colley (217)
  • Martin Diehl (1) +
  • Djip007 (1) +
  • Kevin Doshi (2) +
  • Michael Dunphy (2)
  • Andy Everall (1) +
  • Thomas J. Fan (2)
  • fancidev (60)
  • Sergey Fedorov (2) +
  • Sahil Garje (1) +
  • Gabriel Gerlero (2)
  • Yotam Gingold (1) +
  • Ralf Gommers (107)
  • Rohit Goswami (62)
  • Anil Gurses (1) +
  • Oscar Gustafsson (1) +
  • Matt Haberland (371)
  • Matt Hall (1) +
  • Joren Hammudoglu (3) +
  • CY Han (1) +
  • Daniel Isaac (4) +
  • Maxim Ivanov (1)
  • Jakob Jakobson (2)
  • Janez Demšar (4) +
  • Chris Jerdonek (2) +
  • Adam Jones (4) +
  • Aditi Juneja (1) +
  • Nuri Jung (1) +
  • Guus Kamphuis (1) +
  • Aditya Karumanchi (2) +
  • Robert Kern (5)
  • Agriya Khetarpal (10)
  • Andrew Knyazev (7)
  • Gideon Genadi Kogan (1) +
  • Damien LaRocque (1) +
  • Eric Larson (10)
  • Gregory R. Lee (4)
  • Linfye (1) +
  • Boyu Liu (1) +
  • Drew Allan Loney (1) +
  • Christian Lorentzen (1)
  • Smit Lunagariya (1)
  • Henry Lunn (1) +
  • Marco Maggi (4)
  • Lauren Main (1) +
  • Martin Spišák (1) +
  • Mateusz Sokół (4)
  • Jan-Kristian Mathisen (1) +
  • Nikolay Mayorov (2)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (62)
  • João Mendes (10)
  • Gian Marco Messa (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Michał Górny (2)
  • Naoto Mizuno (2)
  • Nicolas Mokus (2)
  • musvaage (18) +
  • Andrew Nelson (88)
  • Jens Hedegaard Nielsen (1) +
  • Roman Nigmatullin (8) +
  • Nick ODell (37)
  • Yagiz Olmez (4)
  • Matti Picus (9)
  • Diogo Pires (5) +
  • Ilhan Polat (96)
  • Zachary Potthoff (1) +
  • Tom M. Ragonneau (2)
  • Peter Ralph (1) +
  • Stephan Rave (1) +
  • Tyler Reddy (131)
  • redha2404 (2) +
  • Ritvik1sharma (1) +
  • Érico Nogueira Rolim (1) +
  • Heshy Roskes (1)
  • Pamphile Roy (34)
  • Mikhail Ryazanov (1) +
  • Sina Saber (1) +
  • Atsushi Sakai (1)
  • Clemens Schmid (1) +
  • Daniel Schmitz (15)
  • Moritz Schreiber (1) +
  • Dan Schult (88)
  • Searchingdays (1) +
  • Matias Senger (1) +
  • Scott Shambaugh (1)
  • Zhida Shang (1) +
  • Sheila-nk (4)
  • Romain Simon (2) +
  • Gagandeep Singh (31)
  • Albert Steppi (36)
  • Kai Striega (1)
  • Anushka Suyal (143) +
  • Alex Szatmary (1)
  • Svetlin Tassev (1) +
  • Ewout ter Hoeven (1)
  • Tibor Völcker (4) +
  • Kanishk Tiwari (1) +
  • Yusuke Toyama (1) +
  • Edgar Andrés Margffoy Tuay (124)
  • Adam Turner (2) +
  • Nicole Vadot (1) +
  • Andrew Valentine (1)
  • Christian Veenhuis (2)
  • vfdev (2) +
  • Pauli Virtanen (2)
  • Simon Waldherr (1) +
  • Stefan van der Walt (2)
  • Warren Weckesser (23)
  • Anreas Weh (1)
  • Benoît Wygas (2) +
  • Pavadol Yamsiri (3) +
  • ysard (1) +
  • Xiao Yuan (2)
  • Irwin Zaid (12)
  • Gang Zhao (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (10)

A total of 148 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 1 year ago

scipy - SciPy 1.14.1

SciPy 1.14.1 Release Notes

SciPy 1.14.1 adds support for Python 3.13, including binary wheels on PyPI. Apart from that, it is a bug-fix release with no new features compared to 1.14.0.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Evgeni Burovski (1)
  • CJ Carey (2)
  • Lucas Colley (3)
  • Ralf Gommers (3)
  • Melissa Weber Mendonça (1)
  • Andrew Nelson (3)
  • Nick ODell (1)
  • Tyler Reddy (36)
  • Daniel Schmitz (1)
  • Dan Schult (4)
  • Albert Steppi (2)
  • Ewout ter Hoeven (1)
  • Tibor Völcker (2) +
  • Adam Turner (1) +
  • Warren Weckesser (2)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1)

A total of 17 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 2 years ago

scipy - SciPy 1.14.0

SciPy 1.14.0 Release Notes

SciPy 1.14.0 is the culmination of 3 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.14.x branch, and on adding new features on the main branch.

This release requires Python 3.10+ and NumPy 1.23.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • SciPy now supports the new Accelerate library introduced in macOS 13.3, and has wheels built against Accelerate for macOS >=14 resulting in significant performance improvements for many linear algebra operations.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

New features

scipy.fft improvements

  • A new function, scipy.fft.prev_fast_len, has been added. This function finds the largest composite of FFT radices that is less than the target length. It is useful for discarding a minimal number of samples before FFT.

scipy.io improvements

  • wavfile now supports reading and writing of wav files in the RF64 format, allowing files greater than 4 GB in size to be handled.

scipy.constants improvements

  • Experimental support for the array API standard has been added.

scipy.interpolate improvements

  • scipy.interpolate.Akima1DInterpolator now supports extrapolation via the extrapolate argument.

scipy.optimize improvements

  • scipy.optimize.HessianUpdateStrategy now also accepts square arrays for init_scale.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • There are some performance improvements in scipy.optimize.differential_evolution.
  • scipy.optimize.approx_fprime now has linear space complexity.

scipy.signal improvements

  • scipy.signal.minimum_phase has a new argument half, allowing the provision of a filter of the same length as the linear-phase FIR filter coefficients and with the same magnitude spectrum.

scipy.sparse improvements

  • Sparse arrays now support 1D shapes in COO, DOK and CSR formats. These are all the formats we currently intend to support 1D shapes. Other sparse array formats raise an exception for 1D input.
  • Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays. Results are still COO format sparse arrays for min/nanmin and dense np.ndarray for argmin.
  • Iterating over csr_array or csc_array yields 1D (CSC) arrays.
  • Sparse matrix and array objects improve their repr and str output.
  • A special case has been added to handle multiplying a dia_array by a scalar, which avoids a potentially costly conversion to CSR format.
  • scipy.sparse.csgraph.yen has been added, allowing usage of Yen's K-Shortest Paths algorithm on a directed on undirected graph.
  • Addition between DIA-format sparse arrays and matrices is now faster.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

scipy.spatial improvements

  • Rotation supports an alternative "scalar-first" convention of quaternion component ordering. It is available via the keyword argument scalar_first of from_quat and as_quat methods.
  • Some minor performance improvements for inverting of Rotation objects.

scipy.special improvements

  • Added scipy.special.log_wright_bessel, for calculation of the logarithm of Wright's Bessel function.
  • The relative error in scipy.special.hyp2f1 calculations has improved substantially.
  • Improved behavior of boxcox, inv_boxcox, boxcox1p, and inv_boxcox1p by preventing premature overflow.

scipy.stats improvements

  • A new function scipy.stats.power can be used for simulating the power of a hypothesis test with respect to a specified alternative.
  • The Irwin-Hall (AKA Uniform Sum) distribution has been added as scipy.stats.irwinhall.
  • Exact p-value calculations of scipy.stats.mannwhitneyu are much faster and use less memory.
  • scipy.stats.pearsonr now accepts n-D arrays and computes the statistic along a specified axis.
  • scipy.stats.kstat, scipy.stats.kstatvar, and scipy.stats.bartlett are faster at performing calculations along an axis of a large n-D array.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, or CuPy arrays as array arguments.

As of 1.14.0, there is support for

  • scipy.cluster
  • scipy.fft
  • scipy.constants
  • scipy.special: (select functions)

    • scipy.special.log_ndtr
    • scipy.special.ndtr
    • scipy.special.ndtri
    • scipy.special.erf
    • scipy.special.erfc
    • scipy.special.i0
    • scipy.special.i0e
    • scipy.special.i1
    • scipy.special.i1e
    • scipy.special.gammaln
    • scipy.special.gammainc
    • scipy.special.gammaincc
    • scipy.special.logit
    • scipy.special.expit
    • scipy.special.entr
    • scipy.special.rel_entr
    • scipy.special.xlogy
    • scipy.special.chdtrc
  • scipy.stats: (select functions)

    • scipy.stats.describe
    • scipy.stats.moment
    • scipy.stats.skew
    • scipy.stats.kurtosis
    • scipy.stats.kstat
    • scipy.stats.kstatvar
    • scipy.stats.circmean
    • scipy.stats.circvar
    • scipy.stats.circstd
    • scipy.stats.entropy
    • scipy.stats.variation
    • scipy.stats.sem
    • scipy.stats.ttest_1samp
    • scipy.stats.pearsonr
    • scipy.stats.chisquare
    • scipy.stats.skewtest
    • scipy.stats.kurtosistest
    • scipy.stats.normaltest
    • scipy.stats.jarque_bera
    • scipy.stats.bartlett
    • scipy.stats.power_divergence
    • scipy.stats.monte_carlo_test

Deprecated features

  • scipy.stats.gstd, scipy.stats.chisquare, and scipy.stats.power_divergence have deprecated support for masked array input.
  • scipy.stats.linregress has deprecated support for specifying both samples in one argument; x and y are to be provided as separate arguments.
  • The conjtransp method for scipy.sparse.dok_array and scipy.sparse.dok_matrix has been deprecated and will be removed in SciPy 1.16.0.
  • The option quadrature="trapz" in scipy.integrate.quad_vec has been deprecated in favour of quadrature="trapezoid" and will be removed in SciPy 1.16.0.
  • scipy.special.{comb,perm} have deprecated support for use of exact=True in conjunction with non-integral N and/or k.

Backwards incompatible changes

  • Many scipy.stats functions now produce a standardized warning message when an input sample is too small (e.g. zero size). Previously, these functions may have raised an error, emitted one or more less informative warnings, or emitted no warnings. In most cases, returned results are unchanged; in almost all cases the correct result is NaN.

Expired deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Several previously deprecated methods for sparse arrays were removed: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were removed.
  • scipy.integrate.{simps,trapz,cumtrapz} have been removed in favour of simpson, trapezoid, and cumulative_trapezoid.
  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr} has been removed in favour of rtol. Furthermore, the default value of atol for these functions has changed to 0.0.
  • The restrt argument of scipy.sparse.linalg.gmres has been removed in favour of restart.
  • The initial_lexsort argument of scipy.stats.kendalltau has been removed.
  • The cond and rcond arguments of scipy.linalg.pinv have been removed.
  • The even argument of scipy.integrate.simpson has been removed.
  • The turbo and eigvals arguments from scipy.linalg.{eigh,eigvalsh} have been removed.
  • The legacy argument of scipy.special.comb has been removed.
  • The hz/nyq argument of signal.{firls, firwin, firwin2, remez} has been removed.
  • Objects that weren't part of the public interface but were accessible through deprecated submodules have been removed.
  • float128, float96, and object arrays now raise an error in scipy.signal.medfilt and scipy.signal.order_filter.
  • scipy.interpolate.interp2d has been replaced by an empty stub (to be removed completely in the future).
  • Coinciding with changes to function signatures (e.g. removal of a deprecated keyword), we had deprecated positional use of keyword arguments for the affected functions, which will now raise an error. Affected functions are:

    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • stats.kendalltau
    • linalg.pinv
    • integrate.simpson
    • linalg.{eigh,eigvalsh}
    • special.comb
    • signal.{firls, firwin, firwin2, remez}

Other changes

  • SciPy now uses C17 as the C standard to build with, instead of C99. The C++ standard remains C++17.
  • macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported. This results in significant performance improvements for linear algebra operations, as well as smaller binary wheels.
  • Cross-compilation should be smoother and QEMU or similar is no longer needed to run the cross interpreter.
  • Experimental array API support for the JAX backend has been added to several parts of SciPy.

Authors

  • Name (commits)
  • h-vetinari (34)
  • Steven Adams (1) +
  • Max Aehle (1) +
  • Ataf Fazledin Ahamed (2) +
  • Luiz Eduardo Amaral (1) +
  • Trinh Quoc Anh (1) +
  • Miguel A. Batalla (7) +
  • Tim Beyer (1) +
  • Andrea Blengino (1) +
  • boatwrong (1)
  • Jake Bowhay (51)
  • Dietrich Brunn (2)
  • Evgeni Burovski (177)
  • Tim Butters (7) +
  • CJ Carey (5)
  • Sean Cheah (46)
  • Lucas Colley (73)
  • Giuseppe "Peppe" Dilillo (1) +
  • DWesl (2)
  • Pieter Eendebak (5)
  • Kenji S Emerson (1) +
  • Jonas Eschle (1)
  • fancidev (2)
  • Anthony Frazier (1) +
  • Ilan Gold (1) +
  • Ralf Gommers (125)
  • Rohit Goswami (28)
  • Ben Greiner (1) +
  • Lorenzo Gualniera (1) +
  • Matt Haberland (260)
  • Shawn Hsu (1) +
  • Budjen Jovan (3) +
  • Jozsef Kutas (1)
  • Eric Larson (3)
  • Gregory R. Lee (4)
  • Philip Loche (1) +
  • Christian Lorentzen (5)
  • Sijo Valayakkad Manikandan (2) +
  • marinelay (2) +
  • Nikolay Mayorov (1)
  • Nicholas McKibben (2)
  • Melissa Weber Mendonça (7)
  • João Mendes (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Tomiță Militaru (2) +
  • Andrew Nelson (35)
  • Lysandros Nikolaou (1)
  • Nick ODell (5) +
  • Jacob Ogle (1) +
  • Pearu Peterson (1)
  • Matti Picus (5)
  • Ilhan Polat (9)
  • pwcnorthrop (3) +
  • Bharat Raghunathan (1)
  • Tom M. Ragonneau (2) +
  • Tyler Reddy (101)
  • Pamphile Roy (18)
  • Atsushi Sakai (9)
  • Daniel Schmitz (5)
  • Julien Schueller (2) +
  • Dan Schult (13)
  • Tomer Sery (7)
  • Scott Shambaugh (4)
  • Tuhin Sharma (1) +
  • Sheila-nk (4)
  • Skylake (1) +
  • Albert Steppi (215)
  • Kai Striega (6)
  • Zhibing Sun (2) +
  • Nimish Telang (1) +
  • toofooboo (1) +
  • tpl2go (1) +
  • Edgar Andrés Margffoy Tuay (44)
  • Andrew Valentine (1)
  • Valerix (1) +
  • Christian Veenhuis (1)
  • void (2) +
  • Warren Weckesser (3)
  • Xuefeng Xu (1)
  • Rory Yorke (1)
  • Xiao Yuan (1)
  • Irwin Zaid (35)
  • Elmar Zander (1) +
  • Zaikun ZHANG (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) +

A total of 85 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 2 years ago

scipy - SciPy 1.14.0rc2

SciPy 1.14.0 Release Notes

Note: SciPy 1.14.0 is not released yet!

SciPy 1.14.0 is the culmination of 3 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.14.x branch, and on adding new features on the main branch.

This release requires Python 3.10+ and NumPy 1.23.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • SciPy now supports the new Accelerate library introduced in macOS 13.3, and has wheels built against Accelerate for macOS >=14 resulting in significant performance improvements for many linear algebra operations.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

New features

scipy.fft improvements

  • A new function, scipy.fft.prev_fast_len, has been added. This function finds the largest composite of FFT radices that is less than the target length. It is useful for discarding a minimal number of samples before FFT.

scipy.io improvements

  • wavfile now supports reading and writing of wav files in the RF64 format, allowing files greater than 4 GB in size to be handled.

scipy.constants improvements

  • Experimental support for the array API standard has been added.

scipy.interpolate improvements

  • scipy.interpolate.Akima1DInterpolator now supports extrapolation via the extrapolate argument.

scipy.optimize improvements

  • scipy.optimize.HessianUpdateStrategy now also accepts square arrays for init_scale.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • There are some performance improvements in scipy.optimize.differential_evolution.
  • scipy.optimize.approx_fprime now has linear space complexity.

scipy.signal improvements

  • scipy.signal.minimum_phase has a new argument half, allowing the provision of a filter of the same length as the linear-phase FIR filter coefficients and with the same magnitude spectrum.

scipy.sparse improvements

  • Sparse arrays now support 1D shapes in COO, DOK and CSR formats. These are all the formats we currently intend to support 1D shapes. Other sparse array formats raise an exception for 1D input.
  • Sparse array methods min/nanmin/argmin and max analogs now return 1D arrays. Results are still COO format sparse arrays for min/nanmin and dense np.ndarray for argmin.
  • Sparse matrix and array objects improve their repr and str output.
  • A special case has been added to handle multiplying a dia_array by a scalar, which avoids a potentially costly conversion to CSR format.
  • scipy.sparse.csgraph.yen has been added, allowing usage of Yen's K-Shortest Paths algorithm on a directed on undirected graph.
  • Addition between DIA-format sparse arrays and matrices is now faster.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

scipy.spatial improvements

  • Rotation supports an alternative "scalar-first" convention of quaternion component ordering. It is available via the keyword argument scalar_first of from_quat and as_quat methods.
  • Some minor performance improvements for inverting of Rotation objects.

scipy.special improvements

  • Added scipy.special.log_wright_bessel, for calculation of the logarithm of Wright's Bessel function.
  • The relative error in scipy.special.hyp2f1 calculations has improved substantially.
  • Improved behavior of boxcox, inv_boxcox, boxcox1p, and inv_boxcox1p by preventing premature overflow.

scipy.stats improvements

  • A new function scipy.stats.power can be used for simulating the power of a hypothesis test with respect to a specified alternative.
  • The Irwin-Hall (AKA Uniform Sum) distribution has been added as scipy.stats.irwinhall.
  • Exact p-value calculations of scipy.stats.mannwhitneyu are much faster and use less memory.
  • scipy.stats.pearsonr now accepts n-D arrays and computes the statistic along a specified axis.
  • scipy.stats.kstat, scipy.stats.kstatvar, and scipy.stats.bartlett are faster at performing calculations along an axis of a large n-D array.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, or CuPy arrays as array arguments.

As of 1.14.0, there is support for

  • scipy.cluster
  • scipy.fft
  • scipy.constants
  • scipy.special: (select functions)

    • scipy.special.log_ndtr
    • scipy.special.ndtr
    • scipy.special.ndtri
    • scipy.special.erf
    • scipy.special.erfc
    • scipy.special.i0
    • scipy.special.i0e
    • scipy.special.i1
    • scipy.special.i1e
    • scipy.special.gammaln
    • scipy.special.gammainc
    • scipy.special.gammaincc
    • scipy.special.logit
    • scipy.special.expit
    • scipy.special.entr
    • scipy.special.rel_entr
    • scipy.special.xlogy
    • scipy.special.chdtrc
  • scipy.stats: (select functions)

    • scipy.stats.describe
    • scipy.stats.moment
    • scipy.stats.skew
    • scipy.stats.kurtosis
    • scipy.stats.kstat
    • scipy.stats.kstatvar
    • scipy.stats.circmean
    • scipy.stats.circvar
    • scipy.stats.circstd
    • scipy.stats.entropy
    • scipy.stats.variation
    • scipy.stats.sem
    • scipy.stats.ttest_1samp
    • scipy.stats.pearsonr
    • scipy.stats.chisquare
    • scipy.stats.skewtest
    • scipy.stats.kurtosistest
    • scipy.stats.normaltest
    • scipy.stats.jarque_bera
    • scipy.stats.bartlett
    • scipy.stats.power_divergence
    • scipy.stats.monte_carlo_test

Deprecated features

  • scipy.stats.gstd, scipy.stats.chisquare, and scipy.stats.power_divergence have deprecated support for masked array input.
  • scipy.stats.linregress has deprecated support for specifying both samples in one argument; x and y are to be provided as separate arguments.
  • The conjtransp method for scipy.sparse.dok_array and scipy.sparse.dok_matrix has been deprecated and will be removed in SciPy 1.16.0.
  • The option quadrature="trapz" in scipy.integrate.quad_vec has been deprecated in favour of quadrature="trapezoid" and will be removed in SciPy 1.16.0.
  • scipy.special.comb has deprecated support for use of exact=True in conjunction with non-integral N and/or k.

Backwards incompatible changes

  • Many scipy.stats functions now produce a standardized warning message when an input sample is too small (e.g. zero size). Previously, these functions may have raised an error, emitted one or more less informative warnings, or emitted no warnings. In most cases, returned results are unchanged; in almost all cases the correct result is NaN.

Expired deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Several previously deprecated methods for sparse arrays were removed: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were removed.
  • scipy.integrate.{simps,trapz,cumtrapz} have been removed in favour of simpson, trapezoid, and cumulative_trapezoid.
  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr} has been removed in favour of rtol. Furthermore, the default value of atol for these functions has changed to 0.0.
  • The restrt argument of scipy.sparse.linalg.gmres has been removed in favour of restart.
  • The initial_lexsort argument of scipy.stats.kendalltau has been removed.
  • The cond and rcond arguments of scipy.linalg.pinv have been removed.
  • The even argument of scipy.integrate.simpson has been removed.
  • The turbo and eigvals arguments from scipy.linalg.{eigh,eigvalsh} have been removed.
  • The legacy argument of scipy.special.comb has been removed.
  • The hz/nyq argument of signal.{firls, firwin, firwin2, remez} has been removed.
  • Objects that weren't part of the public interface but were accessible through deprecated submodules have been removed.
  • float128, float96, and object arrays now raise an error in scipy.signal.medfilt and scipy.signal.order_filter.
  • scipy.interpolate.interp2d has been replaced by an empty stub (to be removed completely in the future).
  • Coinciding with changes to function signatures (e.g. removal of a deprecated keyword), we had deprecated positional use of keyword arguments for the affected functions, which will now raise an error. Affected functions are:

    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • stats.kendalltau
    • linalg.pinv
    • integrate.simpson
    • linalg.{eigh,eigvalsh}
    • special.comb
    • signal.{firls, firwin, firwin2, remez}

Other changes

  • SciPy now uses C17 as the C standard to build with, instead of C99. The C++ standard remains C++17.
  • macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported. This results in significant performance improvements for linear algebra operations, as well as smaller binary wheels.
  • Cross-compilation should be smoother and QEMU or similar is no longer needed to run the cross interpreter.
  • Experimental array API support for the JAX backend has been added to several parts of SciPy.

Authors

  • Name (commits)
  • h-vetinari (33)
  • Steven Adams (1) +
  • Max Aehle (1) +
  • Ataf Fazledin Ahamed (2) +
  • Luiz Eduardo Amaral (1) +
  • Trinh Quoc Anh (1) +
  • Miguel A. Batalla (7) +
  • Tim Beyer (1) +
  • Andrea Blengino (1) +
  • boatwrong (1)
  • Jake Bowhay (50)
  • Dietrich Brunn (2)
  • Evgeni Burovski (177)
  • Tim Butters (7) +
  • CJ Carey (5)
  • Sean Cheah (46)
  • Lucas Colley (72)
  • Giuseppe "Peppe" Dilillo (1) +
  • DWesl (2)
  • Pieter Eendebak (5)
  • Kenji S Emerson (1) +
  • Jonas Eschle (1)
  • fancidev (2)
  • Anthony Frazier (1) +
  • Ilan Gold (1) +
  • Ralf Gommers (124)
  • Rohit Goswami (28)
  • Ben Greiner (1) +
  • Lorenzo Gualniera (1) +
  • Matt Haberland (256)
  • Shawn Hsu (1) +
  • Budjen Jovan (3) +
  • Jozsef Kutas (1)
  • Eric Larson (3)
  • Gregory R. Lee (4)
  • Philip Loche (1) +
  • Christian Lorentzen (5)
  • Sijo Valayakkad Manikandan (2) +
  • marinelay (2) +
  • Nikolay Mayorov (1)
  • Nicholas McKibben (2)
  • Melissa Weber Mendonça (7)
  • João Mendes (1) +
  • Samuel Le Meur-Diebolt (1) +
  • Tomiță Militaru (2) +
  • Andrew Nelson (35)
  • Lysandros Nikolaou (1)
  • Nick ODell (5) +
  • Jacob Ogle (1) +
  • Pearu Peterson (1)
  • Matti Picus (5)
  • Ilhan Polat (8)
  • pwcnorthrop (3) +
  • Bharat Raghunathan (1)
  • Tom M. Ragonneau (2) +
  • Tyler Reddy (84)
  • Pamphile Roy (18)
  • Atsushi Sakai (9)
  • Daniel Schmitz (5)
  • Julien Schueller (2) +
  • Dan Schult (13)
  • Tomer Sery (7)
  • Scott Shambaugh (4)
  • Tuhin Sharma (1) +
  • Sheila-nk (4)
  • Skylake (1) +
  • Albert Steppi (215)
  • Kai Striega (6)
  • Zhibing Sun (2) +
  • Nimish Telang (1) +
  • toofooboo (1) +
  • tpl2go (1) +
  • Edgar Andrés Margffoy Tuay (44)
  • Andrew Valentine (1)
  • Valerix (1) +
  • Christian Veenhuis (1)
  • void (2) +
  • Warren Weckesser (3)
  • Xuefeng Xu (1)
  • Rory Yorke (1)
  • Xiao Yuan (1)
  • Irwin Zaid (35)
  • Elmar Zander (1) +
  • Zaikun ZHANG (1)
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (4) +

A total of 85 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 2 years ago

scipy - SciPy 1.14.0rc1

SciPy 1.14.0 Release Notes

Note: SciPy 1.14.0 is not released yet!

SciPy 1.14.0 is the culmination of 3 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.14.x branch, and on adding new features on the main branch.

This release requires Python 3.10+ and NumPy 1.23.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • SciPy now supports the new Accelerate library introduced in macOS 13.3, and has wheels built against Accelerate for macOS >=14 resulting in significant performance improvements for many linear algebra operations.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

New features

scipy.fft improvements

  • A new function, scipy.fft.prev_fast_len, has been added. This function finds the largest composite of FFT radices that is less than the target length. It is useful for discarding a minimal number of samples before FFT.

scipy.io improvements

  • wavfile now supports reading and writing of wav files in the RF64 format, allowing files greater than 4 GB in size to be handled.

scipy.constants improvements

  • Experimental support for the array API standard has been added.

scipy.interpolate improvements

  • scipy.interpolate.Akima1DInterpolator now supports extrapolation via the extrapolate argument.

scipy.optimize improvements

  • scipy.optimize.HessianUpdateStrategy now also accepts square arrays for init_scale.
  • A new method, cobyqa, has been added to scipy.optimize.minimize - this is an interface for COBYQA (Constrained Optimization BY Quadratic Approximations), a derivative-free optimization solver, designed to supersede COBYLA, developed by the Department of Applied Mathematics, The Hong Kong Polytechnic University.
  • There are some performance improvements in scipy.optimize.differential_evolution.
  • scipy.optimize.approx_fprime now has linear space complexity.

scipy.signal improvements

  • scipy.signal.minimum_phase has a new argument half, allowing the provision of a filter of the same length as the linear-phase FIR filter coefficients and with the same magnitude spectrum.

scipy.sparse improvements

  • A special case has been added to handle multiplying a dia_array by a scalar, which avoids a potentially costly conversion to CSR format.
  • scipy.sparse.csgraph.yen has been added, allowing usage of Yen's K-Shortest Paths algorithm on a directed on undirected graph.
  • Addition between DIA-format sparse arrays and matrices is now faster.
  • scipy.sparse.linalg.spsolve_triangular is now more than an order of magnitude faster in many cases.

scipy.spatial improvements

  • Rotation supports an alternative "scalar-first" convention of quaternion component ordering. It is available via the keyword argument scalar_first of from_quat and as_quat methods.
  • Some minor performance improvements for inverting of Rotation objects.

scipy.special improvements

  • Added scipy.special.log_wright_bessel, for calculation of the logarithm of Wright's Bessel function.
  • The relative error in scipy.special.hyp2f1 calculations has improved substantially.
  • Improved behavior of boxcox, inv_boxcox, boxcox1p, and inv_boxcox1p by preventing premature overflow.

scipy.stats improvements

  • A new function scipy.stats.power can be used for simulating the power of a hypothesis test with respect to a specified alternative.
  • The Irwin-Hall (AKA Uniform Sum) distribution has been added as scipy.stats.irwinhall.
  • Exact p-value calculations of scipy.stats.mannwhitneyu are much faster and use less memory.
  • scipy.stats.pearsonr now accepts n-D arrays and computes the statistic along a specified axis.
  • scipy.stats.kstat, scipy.stats.kstatvar, and scipy.stats.bartlett are faster at performing calculations along an axis of a large n-D array.

Array API Standard Support

Experimental support for array libraries other than NumPy has been added to existing sub-packages in recent versions of SciPy. Please consider testing these features by setting an environment variable SCIPY_ARRAY_API=1 and providing PyTorch, JAX, or CuPy arrays as array arguments.

As of 1.14.0, there is support for

  • scipy.cluster
  • scipy.fft
  • scipy.constants
  • scipy.special: (select functions)

    • scipy.special.log_ndtr
    • scipy.special.ndtr
    • scipy.special.ndtri
    • scipy.special.erf
    • scipy.special.erfc
    • scipy.special.i0
    • scipy.special.i0e
    • scipy.special.i1
    • scipy.special.i1e
    • scipy.special.gammaln
    • scipy.special.gammainc
    • scipy.special.gammaincc
    • scipy.special.logit
    • scipy.special.expit
    • scipy.special.entr
    • scipy.special.rel_entr
    • scipy.special.xlogy
    • scipy.special.chdtrc
  • scipy.stats: (select functions)

    • scipy.stats.moment
    • scipy.stats.skew
    • scipy.stats.kurtosis
    • scipy.stats.kstat
    • scipy.stats.kstatvar
    • scipy.stats.circmean
    • scipy.stats.circvar
    • scipy.stats.circstd
    • scipy.stats.entropy
    • scipy.stats.variation
    • scipy.stats.sem
    • scipy.stats.ttest_1samp
    • scipy.stats.pearsonr
    • scipy.stats.chisquare
    • scipy.stats.skewtest
    • scipy.stats.kurtosistest
    • scipy.stats.normaltest
    • scipy.stats.jarque_bera
    • scipy.stats.bartlett
    • scipy.stats.power_divergence
    • scipy.stats.monte_carlo_test

Deprecated features

  • scipy.stats.gstd, scipy.stats.chisquare, and scipy.stats.power_divergence have deprecated support for masked array input.
  • scipy.stats.linregress has deprecated support for specifying both samples in one argument; x and y are to be provided as separate arguments.
  • The conjtransp method for scipy.sparse.dok_array and scipy.sparse.dok_matrix has been deprecated and will be removed in SciPy 1.16.0.
  • The option quadrature="trapz" in scipy.integrate.quad_vec has been deprecated in favour of quadrature="trapezoid" and will be removed in SciPy 1.16.0.
  • scipy.special.comb has deprecated support for use of exact=True in conjunction with non-integral N and/or k.

Backwards incompatible changes

  • Many scipy.stats functions now produce a standardized warning message when an input sample is too small (e.g. zero size). Previously, these functions may have raised an error, emitted one or more less informative warnings, or emitted no warnings. In most cases, returned results are unchanged; in almost all cases the correct result is NaN.

Expired deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Several previously deprecated methods for sparse arrays were removed: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were removed.
  • scipy.integrate.{simps,trapz,cumtrapz} have been removed in favour of simpson, trapezoid, and cumulative_trapezoid.
  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk, mres,lgmres,minres,qmr,tfqmr} has been removed in favour of rtol. Furthermore, the default value of atol for these functions has changed to 0.0.
  • The restrt argument of scipy.sparse.linalg.gmres has been removed in favour of restart.
  • The initial_lexsort argument of scipy.stats.kendalltau has been removed.
  • The cond and rcond arguments of scipy.linalg.pinv have been removed.
  • The even argument of scipy.integrate.simpson has been removed.
  • The turbo and eigvals arguments from scipy.linalg.{eigh,eigvalsh} have been removed.
  • The legacy argument of scipy.special.comb has been removed.
  • The hz/nyq argument of signal.{firls, firwin, firwin2, remez} has been removed.
  • Objects that weren't part of the public interface but were accessible through deprecated submodules have been removed.
  • float128, float96, and object arrays now raise an error in scipy.signal.medfilt and scipy.signal.order_filter.
  • scipy.interpolate.interp2d has been replaced by an empty stub (to be removed completely in the future).
  • Coinciding with changes to function signatures (e.g. removal of a deprecated keyword), we had deprecated positional use of keyword arguments for the affected functions, which will now raise an error. Affected functions are:

    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • stats.kendalltau
    • linalg.pinv
    • integrate.simpson
    • linalg.{eigh,eigvalsh}
    • special.comb
    • signal.{firls, firwin, firwin2, remez}

Other changes

  • SciPy now uses C17 as the C standard to build with, instead of C99. The C++ standard remains C++17.
  • macOS Accelerate, which got a major upgrade in macOS 13.3, is now supported. This results in significant performance improvements for linear algebra operations, as well as smaller binary wheels.
  • Cross-compilation should be smoother and QEMU or similar is no longer needed to run the cross interpreter.
  • Experimental array API support for the JAX backend has been added to several parts of SciPy.

Authors

  • Name (commits)
  • h-vetinari (30)
  • Steven Adams (1) +
  • Max Aehle (1) +
  • Ataf Fazledin Ahamed (2) +
  • Trinh Quoc Anh (1) +
  • Miguel A. Batalla (7) +
  • Tim Beyer (1) +
  • Andrea Blengino (1) +
  • boatwrong (1)
  • Jake Bowhay (47)
  • Dietrich Brunn (2)
  • Evgeni Burovski (174)
  • Tim Butters (7) +
  • CJ Carey (5)
  • Sean Cheah (46)
  • Lucas Colley (72)
  • Giuseppe "Peppe" Dilillo (1) +
  • DWesl (2)
  • Pieter Eendebak (5)
  • Kenji S Emerson (1) +
  • Jonas Eschle (1)
  • fancidev (2)
  • Anthony Frazier (1) +
  • Ilan Gold (1) +
  • Ralf Gommers (122)
  • Rohit Goswami (28)
  • Ben Greiner (1) +
  • Lorenzo Gualniera (1) +
  • Matt Haberland (250)
  • Shawn Hsu (1) +
  • Budjen Jovan (3) +
  • Jozsef Kutas (1)
  • Eric Larson (3)
  • Gregory R. Lee (4)
  • Philip Loche (1) +
  • Christian Lorentzen (5)
  • Sijo Valayakkad Manikandan (2) +
  • marinelay (2) +
  • Nikolay Mayorov (1)
  • Nicholas McKibben (2)
  • Melissa Weber Mendonça (6)
  • João Mendes (1) +
  • Tomiță Militaru (2) +
  • Andrew Nelson (32)
  • Lysandros Nikolaou (1)
  • Nick ODell (5) +
  • Jacob Ogle (1) +
  • Pearu Peterson (1)
  • Matti Picus (4)
  • Ilhan Polat (8)
  • pwcnorthrop (3) +
  • Bharat Raghunathan (1)
  • Tom M. Ragonneau (2) +
  • Tyler Reddy (47)
  • Pamphile Roy (17)
  • Atsushi Sakai (9)
  • Daniel Schmitz (5)
  • Julien Schueller (2) +
  • Dan Schult (12)
  • Tomer Sery (7)
  • Scott Shambaugh (4)
  • Tuhin Sharma (1) +
  • Sheila-nk (4)
  • Skylake (1) +
  • Albert Steppi (214)
  • Kai Striega (6)
  • Zhibing Sun (2) +
  • Nimish Telang (1) +
  • toofooboo (1) +
  • tpl2go (1) +
  • Edgar Andrés Margffoy Tuay (44)
  • Valerix (1) +
  • Christian Veenhuis (1)
  • void (2) +
  • Warren Weckesser (3)
  • Xuefeng Xu (1)
  • Rory Yorke (1)
  • Xiao Yuan (1)
  • Irwin Zaid (35)
  • Elmar Zander (1) +
  • ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (2) +

A total of 81 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 2 years ago

scipy - SciPy 1.13.1

SciPy 1.13.1 Release Notes

SciPy 1.13.1 is a bug-fix release with no new features compared to 1.13.0. The version of OpenBLAS shipped with the PyPI binaries has been increased to 0.3.27.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Jake Bowhay (2)
  • Evgeni Burovski (6)
  • Sean Cheah (2)
  • Lucas Colley (2)
  • DWesl (2)
  • Ralf Gommers (7)
  • Ben Greiner (1) +
  • Matt Haberland (2)
  • Gregory R. Lee (1)
  • Philip Loche (1) +
  • Sijo Valayakkad Manikandan (1) +
  • Matti Picus (1)
  • Tyler Reddy (62)
  • Atsushi Sakai (1)
  • Daniel Schmitz (2)
  • Dan Schult (3)
  • Scott Shambaugh (2)
  • Edgar Andrés Margffoy Tuay (1)

A total of 19 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 2 years ago

scipy - SciPy 1.13.0

SciPy 1.13.0 Release Notes

SciPy 1.13.0 is the culmination of 3 months of hard work. This out-of-band release aims to support NumPy 2.0.0, and is backwards compatible to NumPy 1.22.4. The version of OpenBLAS used to build the PyPI wheels has been increased to 0.3.26.dev.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Support for NumPy 2.0.0.
  • Interactive examples have been added to the documentation, allowing users to run the examples locally on embedded Jupyterlite notebooks in their browser.
  • Preliminary 1D array support for the COO and DOK sparse formats.
  • Several scipy.stats functions have gained support for additional axis, nan_policy, and keepdims arguments. scipy.stats also has several performance and accuracy improvements.

New features

scipy.integrate improvements

  • The terminal attribute of scipy.integrate.solve_ivp events callables now additionally accepts integer values to specify a number of occurrences required for termination, rather than the previous restriction of only accepting a bool value to terminate on the first registered event.

scipy.io improvements

  • scipy.io.wavfile.write has improved dtype input validation.

scipy.interpolate improvements

  • The Modified Akima Interpolation has been added to interpolate.Akima1DInterpolator, available via the new method argument.
  • New method BSpline.insert_knot inserts a knot into a BSpline instance. This routine is similar to the module-level scipy.interpolate.insert function, and works with the BSpline objects instead of tck tuples.
  • RegularGridInterpolator gained the functionality to compute derivatives in place. For instance, RegularGridInterolator((x, y), values, method="cubic")(xi, nu=(1, 1)) evaluates the mixed second derivative, :math:\partial^2 / \partial x \partial y at xi.
  • Performance characteristics of tensor-product spline methods of RegularGridInterpolator have been changed: evaluations should be significantly faster, while construction might be slower. If you experience issues with construction times, you may need to experiment with optional keyword arguments solver and solver_args. Previous behavior (fast construction, slow evaluations) can be obtained via "*_legacy" methods: method="cubic_legacy" is exactly equivalent to method="cubic" in previous releases. See gh-19633 for details.

scipy.signal improvements

  • Many filter design functions now have improved input validation for the sampling frequency (fs).

scipy.sparse improvements

  • coo_array now supports 1D shapes, and has additional 1D support for min, max, argmin, and argmax. The DOK format now has preliminary 1D support as well, though only supports simple integer indices at the time of writing.
  • Experimental support has been added for pydata/sparse array inputs to scipy.sparse.csgraph.
  • dok_array and dok_matrix now have proper implementations of fromkeys.
  • csr and csc formats now have improved setdiag performance.

scipy.spatial improvements

  • voronoi_plot_2d now draws Voronoi edges to infinity more clearly when the aspect ratio is skewed.

scipy.special improvements

  • All Fortran code, namely, AMOS, specfun, and cdflib libraries that the majority of special functions depend on, is ported to Cython/C.
  • The function factorialk now also supports faster, approximate calculation using exact=False.

scipy.stats improvements

  • scipy.stats.rankdata and scipy.stats.wilcoxon have been vectorized, improving their performance and the performance of hypothesis tests that depend on them.
  • stats.mannwhitneyu should now be faster due to a vectorized statistic calculation, improved caching, improved exploitation of symmetry, and a memory reduction. PermutationMethod support was also added.
  • scipy.stats.mood now has nan_policy and keepdims support.
  • scipy.stats.brunnermunzel now has axis and keepdims support.
  • scipy.stats.friedmanchisquare, scipy.stats.shapiro, scipy.stats.normaltest, scipy.stats.skewtest, scipy.stats.kurtosistest, scipy.stats.f_oneway, scipy.stats.alexandergovern, scipy.stats.combine_pvalues, and scipy.stats.kstest have gained axis, nan_policy and keepdims support.
  • scipy.stats.boxcox_normmax has gained a ymax parameter to allow user specification of the maximum value of the transformed data.
  • scipy.stats.vonmises pdf method has been extended to support kappa=0. The fit method is also more performant due to the use of non-trivial bounds to solve for kappa.
  • High order moment calculations for scipy.stats.powerlaw are now more accurate.
  • The fit methods of scipy.stats.gamma (with method='mm') and scipy.stats.loglaplace are faster and more reliable.
  • scipy.stats.goodness_of_fit now supports the use of a custom statistic provided by the user.
  • scipy.stats.wilcoxon now supports PermutationMethod, enabling calculation of accurate p-values in the presence of ties and zeros.
  • scipy.stats.monte_carlo_test now has improved robustness in the face of numerical noise.
  • scipy.stats.wasserstein_distance_nd was introduced to compute the Wasserstein-1 distance between two N-D discrete distributions.

Deprecated features

  • Complex dtypes in PchipInterpolator and Akima1DInterpolator have been deprecated and will raise an error in SciPy 1.15.0. If you are trying to use the real components of the passed array, use np.real on y.
  • Non-integer values of n together with exact=True are deprecated for scipy.special.factorial.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected: - scipy.signal.{lsim2,impulse2,step2} have been removed in favour of scipy.signal.{lsim,impulse,step}. - Window functions can no longer be imported from the scipy.signal namespace and instead should be accessed through either scipy.signal.windows or scipy.signal.get_window. - scipy.sparse no longer supports multi-Ellipsis indexing - scipy.signal.{bspline,quadratic,cubic} have been removed in favour of alternatives in scipy.interpolate. - scipy.linalg.tri{,u,l} have been removed in favour of numpy.tri{,u,l}. - Non-integer arrays in scipy.special.factorial with exact=True now raise an error. - Functions from NumPy's main namespace which were exposed in SciPy's main namespace, such as numpy.histogram exposed by scipy.histogram, have been removed from SciPy's main namespace. Please use the functions directly from numpy. This was originally performed for SciPy 1.12.0 however was missed from the release notes so is included here for completeness.

Backwards incompatible changes

Other changes

  • The second argument of scipy.stats.moment has been renamed to order while maintaining backward compatibility.

Authors

  • Name (commits)
  • h-vetinari (50)
  • acceptacross (1) +
  • Petteri Aimonen (1) +
  • Francis Allanah (2) +
  • Jonas Kock am Brink (1) +
  • anupriyakkumari (12) +
  • Aman Atman (2) +
  • Aaditya Bansal (1) +
  • Christoph Baumgarten (2)
  • Sebastian Berg (4)
  • Nicolas Bloyet (2) +
  • Matt Borland (1)
  • Jonas Bosse (1) +
  • Jake Bowhay (25)
  • Matthew Brett (1)
  • Dietrich Brunn (7)
  • Evgeni Burovski (65)
  • Matthias Bussonnier (4)
  • Tim Butters (1) +
  • Cale (1) +
  • CJ Carey (5)
  • Thomas A Caswell (1)
  • Sean Cheah (44) +
  • Lucas Colley (97)
  • com3dian (1)
  • Gianluca Detommaso (1) +
  • Thomas Duvernay (1)
  • DWesl (2)
  • f380cedric (1) +
  • fancidev (13) +
  • Daniel Garcia (1) +
  • Lukas Geiger (3)
  • Ralf Gommers (147)
  • Matt Haberland (81)
  • Tessa van der Heiden (2) +
  • Shawn Hsu (1) +
  • inky (3) +
  • Jannes Münchmeyer (2) +
  • Aditya Vidyadhar Kamath (2) +
  • Agriya Khetarpal (1) +
  • Andrew Landau (1) +
  • Eric Larson (7)
  • Zhen-Qi Liu (1) +
  • Christian Lorentzen (2)
  • Adam Lugowski (4)
  • m-maggi (6) +
  • Chethin Manage (1) +
  • Ben Mares (1)
  • Chris Markiewicz (1) +
  • Mateusz Sokół (3)
  • Daniel McCloy (1) +
  • Melissa Weber Mendonça (6)
  • Josue Melka (1)
  • Michał Górny (4)
  • Juan Montesinos (1) +
  • Juan F. Montesinos (1) +
  • Takumasa Nakamura (1)
  • Andrew Nelson (27)
  • Praveer Nidamaluri (1)
  • Yagiz Olmez (5) +
  • Dimitri Papadopoulos Orfanos (1)
  • Drew Parsons (1) +
  • Tirth Patel (7)
  • Pearu Peterson (1)
  • Matti Picus (3)
  • Rambaud Pierrick (1) +
  • Ilhan Polat (30)
  • Quentin Barthélemy (1)
  • Tyler Reddy (117)
  • Pamphile Roy (10)
  • Atsushi Sakai (8)
  • Daniel Schmitz (10)
  • Dan Schult (17)
  • Eli Schwartz (4)
  • Stefanie Senger (1) +
  • Scott Shambaugh (2)
  • Kevin Sheppard (2)
  • sidsrinivasan (4) +
  • Samuel St-Jean (1)
  • Albert Steppi (31)
  • Adam J. Stewart (4)
  • Kai Striega (3)
  • Ruikang Sun (1) +
  • Mike Taves (1)
  • Nicolas Tessore (3)
  • Benedict T Thekkel (1) +
  • Will Tirone (4)
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1)
  • Isaac Virshup (2)
  • Ben Wallace (1) +
  • Xuefeng Xu (3)
  • Xiao Yuan (5)
  • Irwin Zaid (8)
  • Elmar Zander (1) +
  • Mathias Zechmeister (1) +

A total of 96 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 2 years ago

scipy - SciPy 1.13.0rc1

SciPy 1.13.0 Release Notes

Note: SciPy 1.13.0 is not released yet!

SciPy 1.13.0 is the culmination of 3 months of hard work. This out-of-band release aims to support NumPy 2.0.0, and is backwards compatible to NumPy 1.22.4. The version of OpenBLAS used to build the PyPI wheels has been increased to 0.3.26.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Support for NumPy 2.0.0.
  • Interactive examples have been added to the documentation, allowing users to run the examples locally on embedded Jupyterlite notebooks in their browser.
  • Preliminary 1D array support for the COO and DOK sparse formats.
  • Several scipy.stats functions have gained support for additional axis, nan_policy, and keepdims arguments. scipy.stats also has several performance and accuracy improvements.

New features

scipy.integrate improvements

  • The terminal attribute of scipy.integrate.solve_ivp events callables now additionally accepts integer values to specify a number of occurrences required for termination, rather than the previous restriction of only accepting a bool value to terminate on the first registered event.

scipy.io improvements

  • scipy.io.wavfile.write has improved dtype input validation.

scipy.interpolate improvements

  • The Modified Akima Interpolation has been added to interpolate.Akima1DInterpolator, available via the new method argument.
  • RegularGridInterpolator gained the functionality to compute derivatives in place. For instance, RegularGridInterolator((x, y), values, method="cubic")(xi, nu=(1, 1)) evaluates the mixed second derivative, :math:\partial^2 / \partial x \partial y at xi.
  • Performance characteristics of tensor-product spline methods of RegularGridInterpolator have been changed: evaluations should be significantly faster, while construction might be slower. If you experience issues with construction times, you may need to experiment with optional keyword arguments solver and solver_args. Previous behavior (fast construction, slow evaluations) can be obtained via "*_legacy" methods: method="cubic_legacy" is exactly equivalent to method="cubic" in previous releases. See gh-19633 for details.

scipy.signal improvements

  • Many filter design functions now have improved input validation for the sampling frequency (fs).

scipy.sparse improvements

  • coo_array now supports 1D shapes, and has additional 1D support for min, max, argmin, and argmax. The DOK format now has preliminary 1D support as well, though only supports simple integer indices at the time of writing.
  • Experimental support has been added for pydata/sparse array inputs to scipy.sparse.csgraph.
  • dok_array and dok_matrix now have proper implementations of fromkeys.
  • csr and csc formats now have improved setdiag performance.

scipy.spatial improvements

  • voronoi_plot_2d now draws Voronoi edges to infinity more clearly when the aspect ratio is skewed.

scipy.special improvements

  • All Fortran code, namely, AMOS, specfun, and cdflib libraries that the majority of special functions depend on, is ported to Cython/C.
  • The function factorialk now also supports faster, approximate calculation using exact=False.

scipy.stats improvements

  • scipy.stats.rankdata and scipy.stats.wilcoxon have been vectorized, improving their performance and the performance of hypothesis tests that depend on them.
  • stats.mannwhitneyu should now be faster due to a vectorized statistic calculation, improved caching, improved exploitation of symmetry, and a memory reduction. PermutationMethod support was also added.
  • scipy.stats.mood now has nan_policy and keepdims support.
  • scipy.stats.brunnermunzel now has axis and keepdims support.
  • scipy.stats.friedmanchisquare, scipy.stats.shapiro, scipy.stats.normaltest, scipy.stats.skewtest, scipy.stats.kurtosistest, scipy.stats.f_oneway, scipy.stats.alexandergovern, scipy.stats.combine_pvalues, and scipy.stats.kstest have gained axis, nan_policy and keepdims support.
  • scipy.stats.boxcox_normmax has gained a ymax parameter to allow user specification of the maximum value of the transformed data.
  • scipy.stats.vonmises pdf method has been extended to support kappa=0. The fit method is also more performant due to the use of non-trivial bounds to solve for kappa.
  • High order moment calculations for scipy.stats.powerlaw are now more accurate.
  • The fit methods of scipy.stats.gamma (with method='mm') and scipy.stats.loglaplace are faster and more reliable.
  • scipy.stats.goodness_of_fit now supports the use of a custom statistic provided by the user.
  • scipy.stats.wilcoxon now supports PermutationMethod, enabling calculation of accurate p-values in the presence of ties and zeros.
  • scipy.stats.monte_carlo_test now has improved robustness in the face of numerical noise.
  • scipy.stats.wasserstein_distance_nd was introduced to compute the Wasserstein-1 distance between two N-D discrete distributions.

Deprecated features

  • Complex dtypes in PchipInterpolator and Akima1DInterpolator have been deprecated and will raise an error in SciPy 1.15.0. If you are trying to use the real components of the passed array, use np.real on y.

Backwards incompatible changes

Other changes

  • The second argument of scipy.stats.moment has been renamed to order while maintaining backward compatibility.

Authors

  • Name (commits)
  • h-vetinari (50)
  • acceptacross (1) +
  • Petteri Aimonen (1) +
  • Francis Allanah (2) +
  • Jonas Kock am Brink (1) +
  • anupriyakkumari (12) +
  • Aman Atman (2) +
  • Aaditya Bansal (1) +
  • Christoph Baumgarten (2)
  • Sebastian Berg (4)
  • Nicolas Bloyet (2) +
  • Matt Borland (1)
  • Jonas Bosse (1) +
  • Jake Bowhay (25)
  • Matthew Brett (1)
  • Dietrich Brunn (7)
  • Evgeni Burovski (48)
  • Matthias Bussonnier (4)
  • Cale (1) +
  • CJ Carey (4)
  • Thomas A Caswell (1)
  • Sean Cheah (44) +
  • Lucas Colley (97)
  • com3dian (1)
  • Gianluca Detommaso (1) +
  • Thomas Duvernay (1)
  • DWesl (2)
  • f380cedric (1) +
  • fancidev (13) +
  • Daniel Garcia (1) +
  • Lukas Geiger (3)
  • Ralf Gommers (139)
  • Matt Haberland (79)
  • Tessa van der Heiden (2) +
  • inky (3) +
  • Jannes Münchmeyer (2) +
  • Aditya Vidyadhar Kamath (2) +
  • Agriya Khetarpal (1) +
  • Andrew Landau (1) +
  • Eric Larson (7)
  • Zhen-Qi Liu (1) +
  • Adam Lugowski (4)
  • m-maggi (6) +
  • Chethin Manage (1) +
  • Ben Mares (1)
  • Chris Markiewicz (1) +
  • Mateusz Sokół (3)
  • Daniel McCloy (1) +
  • Melissa Weber Mendonça (6)
  • Josue Melka (1)
  • Michał Górny (4)
  • Juan Montesinos (1) +
  • Juan F. Montesinos (1) +
  • Takumasa Nakamura (1)
  • Andrew Nelson (26)
  • Praveer Nidamaluri (1)
  • Yagiz Olmez (5) +
  • Dimitri Papadopoulos Orfanos (1)
  • Drew Parsons (1) +
  • Tirth Patel (7)
  • Matti Picus (3)
  • Rambaud Pierrick (1) +
  • Ilhan Polat (30)
  • Quentin Barthélemy (1)
  • Tyler Reddy (81)
  • Pamphile Roy (10)
  • Atsushi Sakai (4)
  • Daniel Schmitz (10)
  • Dan Schult (16)
  • Eli Schwartz (4)
  • Stefanie Senger (1) +
  • Scott Shambaugh (2)
  • Kevin Sheppard (2)
  • sidsrinivasan (4) +
  • Samuel St-Jean (1)
  • Albert Steppi (30)
  • Adam J. Stewart (4)
  • Kai Striega (3)
  • Ruikang Sun (1) +
  • Mike Taves (1)
  • Nicolas Tessore (3)
  • Benedict T Thekkel (1) +
  • Will Tirone (4)
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1)
  • Isaac Virshup (2)
  • Ben Wallace (1) +
  • Xuefeng Xu (3)
  • Xiao Yuan (5)
  • Irwin Zaid (6)
  • Mathias Zechmeister (1) +

A total of 91 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 2 years ago

scipy - SciPy 1.12.0

SciPy 1.12.0 Release Notes

SciPy 1.12.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.12.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Experimental support for the array API standard has been added to part of scipy.special, and to all of scipy.fft and scipy.cluster. There are likely to be bugs and early feedback for usage with CuPy arrays, PyTorch tensors, and other array API compatible libraries is appreciated. Use the SCIPY_ARRAY_API environment variable for testing.
  • A new class, ShortTimeFFT, provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT.
  • Several new constructors have been added for sparse arrays, and many operations now additionally support sparse arrays, further facilitating the migration from sparse matrices.
  • A large portion of the scipy.stats API now has improved support for handling NaN values, masked arrays, and more fine-grained shape-handling. The accuracy and performance of a number of stats methods have been improved, and a number of new statistical tests and distributions have been added.

New features

scipy.cluster improvements

  • Experimental support added for the array API standard; PyTorch tensors, CuPy arrays and array API compatible array libraries are now accepted (GPU support is limited to functions with pure Python implementations). CPU arrays which can be converted to and from NumPy are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.fft improvements

  • Experimental support added for the array API standard; functions which are part of the fft array API standard extension module, as well as the Fast Hankel Transforms and the basic FFTs which are not in the extension module, now accept PyTorch tensors, CuPy arrays and array API compatible array libraries. CPU arrays which can be converted to and from NumPy arrays are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.integrate improvements

  • Added scipy.integrate.cumulative_simpson for cumulative quadrature from sampled data using Simpson's 1/3 rule.

scipy.interpolate improvements

  • New class NdBSpline represents tensor-product splines in N dimensions. This class only knows how to evaluate a tensor product given coefficients and knot vectors. This way it generalizes BSpline for 1D data to N-D, and parallels NdPPoly (which represents N-D tensor product polynomials). Evaluations exploit the localized nature of b-splines.
  • NearestNDInterpolator.__call__ accepts **query_options, which are passed through to the KDTree.query call to find nearest neighbors. This allows, for instance, to limit the neighbor search distance and parallelize the query using the workers keyword.
  • BarycentricInterpolator now allows computing the derivatives.
  • It is now possible to change interpolation values in an existing CloughTocher2DInterpolator instance, while also saving the barycentric coordinates of interpolation points.

scipy.linalg improvements

  • Access to new low-level LAPACK functions is provided via dtgsyl and stgsyl.

scipy.optimize improvements

  • scipy.optimize.isotonic_regression has been added to allow nonparametric isotonic regression.
  • scipy.optimize.nnls is rewritten in Python and now implements the so-called fnnls or fast nnls, making it more efficient for high-dimensional problems.
  • The result object of scipy.optimize.root and scipy.optimize.root_scalar now reports the method used.
  • The callback method of scipy.optimize.differential_evolution can now be passed more detailed information via the intermediate_results keyword parameter. Also, the evolution strategy now accepts a callable for additional customization. The performance of differential_evolution has also been improved.
  • scipy.optimize.minimize method Newton-CG now supports functions that return sparse Hessian matrices/arrays for the hess parameter and is slightly more efficient.
  • scipy.optimize.minimize method BFGS now accepts an initial estimate for the inverse of the Hessian, which allows for more efficient workflows in some circumstances. The new parameter is hess_inv0.
  • scipy.optimize.minimize methods CG, Newton-CG, and BFGS now accept parameters c1 and c2, allowing specification of the Armijo and curvature rule parameters, respectively.
  • scipy.optimize.curve_fit performance has improved due to more efficient memoization of the callable function.

scipy.signal improvements

  • freqz, freqz_zpk, and group_delay are now more accurate when fs has a default value.
  • The new class ShortTimeFFT provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT based on dual windows and provides more fine-grained control of the parametrization especially in regard to scaling and phase-shift. Functionality was implemented to ease working with signal and STFT chunks. A section has been added to the "SciPy User Guide" providing algorithmic details. The functions stft, istft and spectrogram have been marked as legacy.

scipy.sparse improvements

  • sparse.linalg iterative solvers sparse.linalg.cg, sparse.linalg.cgs, sparse.linalg.bicg, sparse.linalg.bicgstab, sparse.linalg.gmres, and sparse.linalg.qmr are rewritten in Python.
  • Updated vendored SuperLU version to 6.0.1, along with a few additional fixes.
  • Sparse arrays have gained additional constructors: eye_array, random_array, block_array, and identity. kron and kronsum have been adjusted to additionally support operation on sparse arrays.
  • Sparse matrices now support a transpose with axes=(1, 0), to mirror the .T method.
  • LaplacianNd now allows selection of the largest subset of eigenvalues, and additionally now supports retrieval of the corresponding eigenvectors. The performance of LaplacianNd has also been improved.
  • The performance of dok_matrix and dok_array has been improved, and their inheritance behavior should be more robust.
  • hstack, vstack, and block_diag now work with sparse arrays, and preserve the input sparse type.
  • A new function, scipy.sparse.linalg.matrix_power, has been added, allowing for exponentiation of sparse arrays.

scipy.spatial improvements

  • Two new methods were implemented for spatial.transform.Rotation: __pow__ to raise a rotation to integer or fractional power and approx_equal to check if two rotations are approximately equal.
  • The method Rotation.align_vectors was extended to solve a constrained alignment problem where two vectors are required to be aligned precisely. Also when given a single pair of vectors, the algorithm now returns the rotation with minimal magnitude, which can be considered as a minor backward incompatible change.
  • A new representation for spatial.transform.Rotation called Davenport angles is available through from_davenport and as_davenport methods.
  • Performance improvements have been added to distance.hamming and distance.correlation.
  • Improved performance of SphericalVoronoi sort_vertices_of_regions and two dimensional area calculations.

scipy.special improvements

  • Added scipy.special.stirling2 for computation of Stirling numbers of the second kind. Both exact calculation and an asymptotic approximation (the default) are supported via exact=True and exact=False (the default) respectively.
  • Added scipy.special.betaincc for computation of the complementary incomplete Beta function and scipy.special.betainccinv for computation of its inverse.
  • Improved precision of scipy.special.betainc and scipy.special.betaincinv.
  • Experimental support added for alternative backends: functions scipy.special.log_ndtr, scipy.special.ndtr, scipy.special.ndtri, scipy.special.erf, scipy.special.erfc, scipy.special.i0, scipy.special.i0e, scipy.special.i1, scipy.special.i1e, scipy.special.gammaln, scipy.special.gammainc, scipy.special.gammaincc, scipy.special.logit, and scipy.special.expit now accept PyTorch tensors and CuPy arrays. These features are still under development and likely to contain bugs, so they are disabled by default; enable them by setting a SCIPY_ARRAY_API environment variable to 1 before importing scipy. Testing is appreciated!

scipy.stats improvements

  • Added scipy.stats.quantile_test, a nonparametric test of whether a hypothesized value is the quantile associated with a specified probability. The confidence_interval method of the result object gives a confidence interval of the quantile.
  • scipy.stats.sampling.FastGeneratorInversion provides a convenient interface to fast random sampling via numerical inversion of distribution CDFs.
  • scipy.stats.geometric_discrepancy adds geometric/topological discrepancy metrics for random samples.
  • scipy.stats.multivariate_normal now has a fit method for fitting distribution parameters to data via maximum likelihood estimation.
  • scipy.stats.bws_test performs the Baumgartner-Weiss-Schindler test of whether two-samples were drawn from the same distribution.
  • scipy.stats.jf_skew_t implements the Jones and Faddy skew-t distribution.
  • scipy.stats.anderson_ksamp now supports a permutation version of the test using the method parameter.
  • The fit methods of scipy.stats.halfcauchy, scipy.stats.halflogistic, and scipy.stats.halfnorm are faster and more accurate.
  • scipy.stats.beta entropy accuracy has been improved for extreme values of distribution parameters.
  • The accuracy of sf and/or isf methods have been improved for several distributions: scipy.stats.burr, scipy.stats.hypsecant, scipy.stats.kappa3, scipy.stats.loglaplace, scipy.stats.lognorm, scipy.stats.lomax, scipy.stats.pearson3, scipy.stats.rdist, and scipy.stats.pareto.
  • The following functions now support parameters axis, nan_policy, and keep_dims: scipy.stats.entropy, scipy.stats.differential_entropy, scipy.stats.variation, scipy.stats.ansari, scipy.stats.bartlett, scipy.stats.levene, scipy.stats.fligner, scipy.stats.circmean, scipy.stats.circvar, scipy.stats.circstd, scipy.stats.tmean, scipy.stats.tvar, scipy.stats.tstd, scipy.stats.tmin, scipy.stats.tmax, and scipy.stats.tsem.
  • The logpdf and fit methods of scipy.stats.skewnorm have been improved.
  • The beta negative binomial distribution is implemented as scipy.stats.betanbinom.
  • Improved performance of scipy.stats.invwishart rvs and logpdf.
  • A source of intermediate overflow in scipy.stats.boxcox_normmax with method='mle' has been eliminated, and the returned value of lmbda is constrained such that the transformed data will not overflow.
  • scipy.stats.nakagami stats is more accurate and reliable.
  • A source of intermediate overflow in scipy.norminvgauss.pdf has been eliminated.
  • Added support for masked arrays to scipy.stats.circmean, scipy.stats.circvar, scipy.stats.circstd, and scipy.stats.entropy.
  • scipy.stats.dirichlet has gained a new covariance (cov) method.
  • Improved accuracy of entropy method of scipy.stats.multivariate_t for large degrees of freedom.
  • scipy.stats.loggamma has an improved entropy method.

Deprecated features

  • Error messages have been made clearer for objects that don't exist in the public namespace and warnings sharpened for private attributes that are not supposed to be imported at all.
  • scipy.signal.cmplx_sort has been deprecated and will be removed in SciPy 1.15. A replacement you can use is provided in the deprecation message.
  • Values the the argument initial of scipy.integrate.cumulative_trapezoid other than 0 and None are now deprecated.
  • scipy.stats.rvs_ratio_uniforms is deprecated in favour of scipy.stats.sampling.RatioUniforms
  • scipy.integrate.quadrature and scipy.integrate.romberg have been deprecated due to accuracy issues and interface shortcomings. They will be removed in SciPy 1.15. Please use scipy.integrate.quad instead.
  • Coinciding with upcoming changes to function signatures (e.g. removal of a deprecated keyword), we are deprecating positional use of keyword arguments for the affected functions, which will raise an error starting with SciPy 1.14. In some cases, this has delayed the originally announced removal date, to give time to respond to the second part of the deprecation. Affected functions are:

    • linalg.{eigh, eigvalsh, pinv}
    • integrate.simpson
    • signal.{firls, firwin, firwin2, remez}
    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • special.comb
    • stats.kendalltau
  • All wavelet functions have been deprecated, as PyWavelets provides suitable implementations; affected functions are: signal.{daub, qmf, cascade, morlet, morlet2, ricker, cwt}

  • scipy.integrate.trapz, scipy.integrate.cumtrapz, and scipy.integrate.simps have been deprecated in favour of scipy.integrate.trapezoid, scipy.integrate.cumulative_trapezoid, and scipy.integrate.simpson respectively and will be removed in SciPy 1.14.

  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk,gmres,lgmres,minres,qmr,tfqmr} is now deprecated in favour of rtol and will be removed in SciPy 1.14. Furthermore, the default value of atol for these functions is due to change to 0.0 in SciPy 1.14.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The centered keyword of scipy.stats.qmc.LatinHypercube has been removed. Use scrambled=False instead of centered=True.
  • scipy.stats.binom_test has been removed in favour of scipy.stats.binomtest.
  • In scipy.stats.iqr, the use of scale='raw' has been removed in favour of scale=1.

Backwards incompatible changes

Other changes

  • The arguments used to compile and link SciPy are now available via show_config.

Authors

  • Name (commits)
  • endolith (1)
  • h-vetinari (34)
  • Tom Adamczewski (3) +
  • Anudeep Adiraju (1) +
  • akeemlh (1)
  • Alex Amadori (2) +
  • Raja Yashwanth Avantsa (2) +
  • Seth Axen (1) +
  • Ross Barnowski (1)
  • Dan Barzilay (1) +
  • Ashish Bastola (1) +
  • Christoph Baumgarten (2)
  • Ben Beasley (3) +
  • Doron Behar (1)
  • Peter Bell (1)
  • Sebastian Berg (1)
  • Ben Boeckel (1) +
  • David Boetius (1) +
  • Matt Borland (1)
  • Jake Bowhay (103)
  • Larry Bradley (1) +
  • Dietrich Brunn (5)
  • Evgeni Burovski (102)
  • Matthias Bussonnier (18)
  • CJ Carey (6)
  • Colin Carroll (1) +
  • Aadya Chinubhai (1) +
  • Luca Citi (1)
  • Lucas Colley (141) +
  • com3dian (1) +
  • Anirudh Dagar (4)
  • Danni (1) +
  • Dieter Werthmüller (1)
  • John Doe (2) +
  • Philippe DONNAT (2) +
  • drestebon (1) +
  • Thomas Duvernay (1)
  • elbarso (1) +
  • emilfrost (2) +
  • Paul Estano (8) +
  • Evandro (2)
  • Franz Király (1) +
  • Nikita Furin (1) +
  • gabrielthomsen (1) +
  • Lukas Geiger (9) +
  • Artem Glebov (22) +
  • Caden Gobat (1)
  • Ralf Gommers (127)
  • Alexander Goscinski (2) +
  • Rohit Goswami (2) +
  • Olivier Grisel (1)
  • Matt Haberland (244)
  • Charles Harris (1)
  • harshilkamdar (1) +
  • Alon Hovav (2) +
  • Gert-Ludwig Ingold (1)
  • Romain Jacob (1) +
  • jcwhitehead (1) +
  • Julien Jerphanion (13)
  • He Jia (1)
  • JohnWT (1) +
  • jokasimr (1) +
  • Evan W Jones (1)
  • Karen Róbertsdóttir (1) +
  • Ganesh Kathiresan (1)
  • Robert Kern (11)
  • Andrew Knyazev (4)
  • Uwe L. Korn (1) +
  • Rishi Kulkarni (1)
  • Kale Kundert (3) +
  • Jozsef Kutas (2)
  • Kyle0 (2) +
  • Robert Langefeld (1) +
  • Jeffrey Larson (1) +
  • Jessy Lauer (1) +
  • lciti (1) +
  • Hoang Le (1) +
  • Antony Lee (5)
  • Thilo Leitzbach (4) +
  • LemonBoy (2) +
  • Ellie Litwack (8) +
  • Thomas Loke (4) +
  • Malte Londschien (1) +
  • Christian Lorentzen (6)
  • Adam Lugowski (10) +
  • lutefiskhotdish (1)
  • mainak33 (1) +
  • Ben Mares (11) +
  • mart-mihkel (2) +
  • Mateusz Sokół (24) +
  • Nikolay Mayorov (4)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (7)
  • Michał Górny (1)
  • Kat Mistberg (2) +
  • mkiffer (1) +
  • mocquin (1) +
  • Nicolas Mokus (2) +
  • Sturla Molden (1)
  • Roberto Pastor Muela (3) +
  • Bijay Nayak (1) +
  • Andrew Nelson (105)
  • Praveer Nidamaluri (3) +
  • Lysandros Nikolaou (2)
  • Dimitri Papadopoulos Orfanos (7)
  • Pablo Rodríguez Pérez (1) +
  • Dimitri Papadopoulos (2)
  • Tirth Patel (14)
  • Kyle Paterson (1) +
  • Paul (4) +
  • Yann Pellegrini (2) +
  • Matti Picus (4)
  • Ilhan Polat (36)
  • Pranav (1) +
  • Bharat Raghunathan (1)
  • Chris Rapson (1) +
  • Matteo Raso (4)
  • Tyler Reddy (215)
  • Martin Reinecke (1)
  • Tilo Reneau-Cardoso (1) +
  • resting-dove (2) +
  • Simon Segerblom Rex (4)
  • Lucas Roberts (2)
  • Pamphile Roy (31)
  • Feras Saad (3) +
  • Atsushi Sakai (3)
  • Masahiro Sakai (2) +
  • Omar Salman (14)
  • Andrej Savikin (1) +
  • Daniel Schmitz (55)
  • Dan Schult (19)
  • Scott Shambaugh (9)
  • Sheila-nk (2) +
  • Mauro Silberberg (3) +
  • Maciej Skorski (1) +
  • Laurent Sorber (1) +
  • Albert Steppi (28)
  • Kai Striega (1)
  • Saswat Susmoy (1) +
  • Alex Szatmary (1) +
  • Søren Fuglede Jørgensen (3)
  • othmane tamri (3) +
  • Ewout ter Hoeven (1)
  • Will Tirone (1)
  • TLeitzbach (1) +
  • Kevin Topolski (1) +
  • Edgar Andrés Margffoy Tuay (1)
  • Dipansh Uikey (1) +
  • Matus Valo (3)
  • Christian Veenhuis (2)
  • Nicolas Vetsch (1) +
  • Isaac Virshup (7)
  • Hielke Walinga (2) +
  • Stefan van der Walt (2)
  • Warren Weckesser (7)
  • Bernhard M. Wiedemann (4)
  • Levi John Wolf (1)
  • Xuefeng Xu (4) +
  • Rory Yorke (2)
  • YoussefAli1 (1) +
  • Irwin Zaid (4) +
  • Jinzhe Zeng (1) +
  • JIMMY ZHAO (1) +

A total of 163 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 2 years ago

scipy - SciPy 1.12.0rc2

SciPy 1.12.0 Release Notes

Note: SciPy 1.12.0 is not released yet!

SciPy 1.12.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.12.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Experimental support for the array API standard has been added to part of scipy.special, and to all of scipy.fft and scipy.cluster. There are likely to be bugs and early feedback for usage with CuPy arrays, PyTorch tensors, and other array API compatible libraries is appreciated. Use the SCIPY_ARRAY_API environment variable for testing.
  • A new class, ShortTimeFFT, provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT.
  • Several new constructors have been added for sparse arrays, and many operations now additionally support sparse arrays, further facilitating the migration from sparse matrices.
  • A large portion of the scipy.stats API now has improved support for handling NaN values, masked arrays, and more fine-grained shape-handling. The accuracy and performance of a number of stats methods have been improved, and a number of new statistical tests and distributions have been added.

New features

scipy.cluster improvements

  • Experimental support added for the array API standard; PyTorch tensors, CuPy arrays and array API compatible array libraries are now accepted (GPU support is limited to functions with pure Python implementations). CPU arrays which can be converted to and from NumPy are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.fft improvements

  • Experimental support added for the array API standard; functions which are part of the fft array API standard extension module, as well as the Fast Hankel Transforms and the basic FFTs which are not in the extension module, now accept PyTorch tensors, CuPy arrays and array API compatible array libraries. CPU arrays which can be converted to and from NumPy arrays are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.integrate improvements

  • Added scipy.integrate.cumulative_simpson for cumulative quadrature from sampled data using Simpson's 1/3 rule.

scipy.interpolate improvements

  • New class NdBSpline represents tensor-product splines in N dimensions. This class only knows how to evaluate a tensor product given coefficients and knot vectors. This way it generalizes BSpline for 1D data to N-D, and parallels NdPPoly (which represents N-D tensor product polynomials). Evaluations exploit the localized nature of b-splines.
  • NearestNDInterpolator.__call__ accepts **query_options, which are passed through to the KDTree.query call to find nearest neighbors. This allows, for instance, to limit the neighbor search distance and parallelize the query using the workers keyword.
  • BarycentricInterpolator now allows computing the derivatives.
  • It is now possible to change interpolation values in an existing CloughTocher2DInterpolator instance, while also saving the barycentric coordinates of interpolation points.

scipy.linalg improvements

  • Access to new low-level LAPACK functions is provided via dtgsyl and stgsyl.

scipy.ndimage improvements

scipy.optimize improvements

  • scipy.optimize.nnls is rewritten in Python and now implements the so-called fnnls or fast nnls.
  • The result object of scipy.optimize.root and scipy.optimize.root_scalar now reports the method used.
  • The callback method of scipy.optimize.differential_evolution can now be passed more detailed information via the intermediate_results keyword parameter. Also, the evolution strategy now accepts a callable for additional customization. The performance of differential_evolution has also been improved.
  • minimize method Newton-CG has been made slightly more efficient.
  • minimize method BFGS now accepts an initial estimate for the inverse of the Hessian, which allows for more efficient workflows in some circumstances. The new parameter is hess_inv0.
  • minimize methods CG, Newton-CG, and BFGS now accept parameters c1 and c2, allowing specification of the Armijo and curvature rule parameters, respectively.
  • curve_fit performance has improved due to more efficient memoization of the callable function.
  • isotonic_regression has been added to allow nonparametric isotonic regression.

scipy.signal improvements

  • freqz, freqz_zpk, and group_delay are now more accurate when fs has a default value.
  • The new class ShortTimeFFT provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT based on dual windows and provides more fine-grained control of the parametrization especially in regard to scaling and phase-shift. Functionality was implemented to ease working with signal and STFT chunks. A section has been added to the "SciPy User Guide" providing algorithmic details. The functions stft, istft and spectrogram have been marked as legacy.

scipy.sparse improvements

  • sparse.linalg iterative solvers sparse.linalg.cg, sparse.linalg.cgs, sparse.linalg.bicg, sparse.linalg.bicgstab, sparse.linalg.gmres, and sparse.linalg.qmr are rewritten in Python.
  • Updated vendored SuperLU version to 6.0.1, along with a few additional fixes.
  • Sparse arrays have gained additional constructors: eye_array, random_array, block_array, and identity. kron and kronsum have been adjusted to additionally support operation on sparse arrays.
  • Sparse matrices now support a transpose with axes=(1, 0), to mirror the .T method.
  • LaplacianNd now allows selection of the largest subset of eigenvalues, and additionally now supports retrieval of the corresponding eigenvectors. The performance of LaplacianNd has also been improved.
  • The performance of dok_matrix and dok_array has been improved, and their inheritance behavior should be more robust.
  • hstack, vstack, and block_diag now work with sparse arrays, and preserve the input sparse type.
  • A new function, scipy.sparse.linalg.matrix_power, has been added, allowing for exponentiation of sparse arrays.

scipy.spatial improvements

  • Two new methods were implemented for spatial.transform.Rotation: __pow__ to raise a rotation to integer or fractional power and approx_equal to check if two rotations are approximately equal.
  • The method Rotation.align_vectors was extended to solve a constrained alignment problem where two vectors are required to be aligned precisely. Also when given a single pair of vectors, the algorithm now returns the rotation with minimal magnitude, which can be considered as a minor backward incompatible change.
  • A new representation for spatial.transform.Rotation called Davenport angles is available through from_davenport and as_davenport methods.
  • Performance improvements have been added to distance.hamming and distance.correlation.
  • Improved performance of SphericalVoronoi sort_vertices_of_regions and two dimensional area calculations.

scipy.special improvements

  • Added scipy.special.stirling2 for computation of Stirling numbers of the second kind. Both exact calculation and an asymptotic approximation (the default) are supported via exact=True and exact=False (the default) respectively.
  • Added scipy.special.betaincc for computation of the complementary incomplete Beta function and scipy.special.betainccinv for computation of its inverse.
  • Improved precision of scipy.special.betainc and scipy.special.betaincinv
  • Experimental support added for alternative backends: functions scipy.special.log_ndtr, scipy.special.ndtr, scipy.special.ndtri, scipy.special.erf, scipy.special.erfc, scipy.special.i0, scipy.special.i0e, scipy.special.i1, scipy.special.i1e, scipy.special.gammaln, scipy.special.gammainc, scipy.special.gammaincc, scipy.special.logit, and scipy.special.expit now accept PyTorch tensors and CuPy arrays. These features are still under development and likely to contain bugs, so they are disabled by default; enable them by setting a SCIPY_ARRAY_API environment variable to 1 before importing scipy. Testing is appreciated!

scipy.stats improvements

  • Added scipy.stats.quantile_test, a nonparametric test of whether a hypothesized value is the quantile associated with a specified probability. The confidence_interval method of the result object gives a confidence interval of the quantile.
  • scipy.stats.wasserstein_distance now computes the Wasserstein distance in the multidimensional case.
  • scipy.stats.sampling.FastGeneratorInversion provides a convenient interface to fast random sampling via numerical inversion of distribution CDFs.
  • scipy.stats.geometric_discrepancy adds geometric/topological discrepancy metrics for random samples.
  • scipy.stats.multivariate_normal now has a fit method for fitting distribution parameters to data via maximum likelihood estimation.
  • scipy.stats.bws_test performs the Baumgartner-Weiss-Schindler test of whether two-samples were drawn from the same distribution.
  • scipy.stats.jf_skew_t implements the Jones and Faddy skew-t distribution.
  • scipy.stats.anderson_ksamp now supports a permutation version of the test using the method parameter.
  • The fit methods of scipy.stats.halfcauchy, scipy.stats.halflogistic, and scipy.stats.halfnorm are faster and more accurate.
  • scipy.stats.beta entropy accuracy has been improved for extreme values of distribution parameters.
  • The accuracy of sf and/or isf methods have been improved for several distributions: scipy.stats.burr, scipy.stats.hypsecant, scipy.stats.kappa3, scipy.stats.loglaplace, scipy.stats.lognorm, scipy.stats.lomax, scipy.stats.pearson3, scipy.stats.rdist, and scipy.stats.pareto.
  • The following functions now support parameters axis, nan_policy, and keep_dims: scipy.stats.entropy, scipy.stats.differential_entropy, scipy.stats.variation, scipy.stats.ansari, scipy.stats.bartlett, scipy.stats.levene, scipy.stats.fligner, scipy.stats.cirmean,scipy.stats.circvar,scipy.stats.circstd,scipy.stats.tmean,scipy.stats.tvar,scipy.stats.tstd,scipy.stats.tmin,scipy.stats.tmax, andscipy.stats.tsem`.
  • The logpdf and fit methods of scipy.stats.skewnorm have been improved.
  • The beta negative binomial distribution is implemented as scipy.stats.betanbinom.
  • The speed of scipy.stats.invwishart rvs and logpdf have been improved.
  • A source of intermediate overflow in scipy.stats.boxcox_normmax with method='mle' has been eliminated, and the returned value of lmbda is constrained such that the transformed data will not overflow.
  • scipy.stats.nakagami stats is more accurate and reliable.
  • A source of intermediate overflow in scipy.norminvgauss.pdf has been eliminated.
  • Added support for masked arrays to stats.circmean, stats.circvar, stats.circstd, and stats.entropy.
  • dirichlet has gained a new covariance (cov) method.
  • Improved accuracy of multivariate_t entropy with large degrees of freedom.
  • loggamma has an improved entropy method.

Deprecated features

  • Error messages have been made clearer for objects that don't exist in the public namespace and warnings sharpened for private attributes that are not supposed to be imported at all.
  • scipy.signal.cmplx_sort has been deprecated and will be removed in SciPy 1.14. A replacement you can use is provided in the deprecation message.
  • Values the the argument initial of scipy.integrate.cumulative_trapezoid other than 0 and None are now deprecated.
  • scipy.stats.rvs_ratio_uniforms is deprecated in favour of scipy.stats.sampling.RatioUniforms
  • scipy.integrate.quadrature and scipy.integrate.romberg have been deprecated due to accuracy issues and interface shortcomings. They will be removed in SciPy 1.14. Please use scipy.integrate.quad instead.
  • Coinciding with upcoming changes to function signatures (e.g. removal of a deprecated keyword), we are deprecating positional use of keyword arguments for the affected functions, which will raise an error starting with SciPy 1.14. In some cases, this has delayed the originally announced removal date, to give time to respond to the second part of the deprecation. Affected functions are:

    • linalg.{eigh, eigvalsh, pinv}
    • integrate.simpson
    • signal.{firls, firwin, firwin2, remez}
    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • special.comb
    • stats.kendalltau
  • All wavelet functions have been deprecated, as PyWavelets provides suitable implementations; affected functions are: signal.{daub, qmf, cascade, morlet, morlet2, ricker, cwt}

  • scipy.integrate.trapz, scipy.integrate.cumtrapz, and scipy.integrate.simps have been deprecated in favour of scipy.integrate.trapezoid, scipy.integrate.cumulative_trapezoid, and scipy.integrate.simpson respectively and will be removed in SciPy 1.14.

  • The tol argument of scipy.sparse.linalg.{bcg,bicstab,cg,cgs,gcrotmk,gmres,lgmres,minres,qmr,tfqmr} is now deprecated in favour of rtol and will be removed in SciPy 1.14. Furthermore, the default value of atol for these functions is due to change to 0.0 in SciPy 1.14.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The centered keyword of scipy.stats.qmc.LatinHypercube has been removed. Use scrambled=False instead of centered=True.
  • scipy.stats.binom_test has been removed in favour of scipy.stats.binomtest.
  • In scipy.stats.iqr, the use of scale='raw' has been removed in favour of scale=1.

Backwards incompatible changes

Other changes

  • The arguments used to compile and link SciPy are now available via show_config.

Authors

  • Name (commits)
  • endolith (1)
  • h-vetinari (32)
  • Tom Adamczewski (3) +
  • Anudeep Adiraju (1) +
  • akeemlh (1)
  • Alex Amadori (2) +
  • Raja Yashwanth Avantsa (2) +
  • Seth Axen (1) +
  • Ross Barnowski (1)
  • Dan Barzilay (1) +
  • Ashish Bastola (1) +
  • Christoph Baumgarten (2)
  • Ben Beasley (3) +
  • Doron Behar (1)
  • Peter Bell (1)
  • Sebastian Berg (1)
  • Ben Boeckel (1) +
  • David Boetius (1) +
  • Matt Borland (1)
  • Jake Bowhay (103)
  • Larry Bradley (1) +
  • Dietrich Brunn (5)
  • Evgeni Burovski (102)
  • Matthias Bussonnier (18)
  • CJ Carey (6)
  • Colin Carroll (1) +
  • Aadya Chinubhai (1) +
  • Luca Citi (1)
  • Lucas Colley (141) +
  • com3dian (1) +
  • Anirudh Dagar (4)
  • Danni (1) +
  • Dieter Werthmüller (1)
  • John Doe (2) +
  • Philippe DONNAT (2) +
  • drestebon (1) +
  • Thomas Duvernay (1)
  • elbarso (1) +
  • emilfrost (2) +
  • Paul Estano (8) +
  • Evandro (2)
  • Franz Király (1) +
  • Nikita Furin (1) +
  • gabrielthomsen (1) +
  • Lukas Geiger (9) +
  • Artem Glebov (22) +
  • Caden Gobat (1)
  • Ralf Gommers (126)
  • Alexander Goscinski (2) +
  • Rohit Goswami (2) +
  • Olivier Grisel (1)
  • Matt Haberland (243)
  • Charles Harris (1)
  • harshilkamdar (1) +
  • Alon Hovav (2) +
  • Gert-Ludwig Ingold (1)
  • Romain Jacob (1) +
  • jcwhitehead (1) +
  • Julien Jerphanion (13)
  • He Jia (1)
  • JohnWT (1) +
  • jokasimr (1) +
  • Evan W Jones (1)
  • Karen Róbertsdóttir (1) +
  • Ganesh Kathiresan (1)
  • Robert Kern (11)
  • Andrew Knyazev (4)
  • Uwe L. Korn (1) +
  • Rishi Kulkarni (1)
  • Kale Kundert (3) +
  • Jozsef Kutas (2)
  • Kyle0 (2) +
  • Robert Langefeld (1) +
  • Jeffrey Larson (1) +
  • Jessy Lauer (1) +
  • lciti (1) +
  • Hoang Le (1) +
  • Antony Lee (5)
  • Thilo Leitzbach (4) +
  • LemonBoy (2) +
  • Ellie Litwack (8) +
  • Thomas Loke (4) +
  • Malte Londschien (1) +
  • Christian Lorentzen (6)
  • Adam Lugowski (10) +
  • lutefiskhotdish (1)
  • mainak33 (1) +
  • Ben Mares (11) +
  • mart-mihkel (2) +
  • Mateusz Sokół (24) +
  • Nikolay Mayorov (4)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (7)
  • Michał Górny (1)
  • Kat Mistberg (2) +
  • mkiffer (1) +
  • mocquin (1) +
  • Nicolas Mokus (2) +
  • Sturla Molden (1)
  • Roberto Pastor Muela (3) +
  • Bijay Nayak (1) +
  • Andrew Nelson (105)
  • Praveer Nidamaluri (3) +
  • Lysandros Nikolaou (2)
  • Dimitri Papadopoulos Orfanos (7)
  • Pablo Rodríguez Pérez (1) +
  • Dimitri Papadopoulos (2)
  • Tirth Patel (14)
  • Kyle Paterson (1) +
  • Paul (4) +
  • Yann Pellegrini (2) +
  • Matti Picus (4)
  • Ilhan Polat (36)
  • Pranav (1) +
  • Bharat Raghunathan (1)
  • Chris Rapson (1) +
  • Matteo Raso (4)
  • Tyler Reddy (201)
  • Martin Reinecke (1)
  • Tilo Reneau-Cardoso (1) +
  • resting-dove (2) +
  • Simon Segerblom Rex (4)
  • Lucas Roberts (2)
  • Pamphile Roy (31)
  • Feras Saad (3) +
  • Atsushi Sakai (3)
  • Masahiro Sakai (2) +
  • Omar Salman (14)
  • Andrej Savikin (1) +
  • Daniel Schmitz (54)
  • Dan Schult (19)
  • Scott Shambaugh (9)
  • Sheila-nk (2) +
  • Mauro Silberberg (3) +
  • Maciej Skorski (1) +
  • Laurent Sorber (1) +
  • Albert Steppi (28)
  • Kai Striega (1)
  • Saswat Susmoy (1) +
  • Alex Szatmary (1) +
  • Søren Fuglede Jørgensen (3)
  • othmane tamri (3) +
  • Ewout ter Hoeven (1)
  • Will Tirone (1)
  • TLeitzbach (1) +
  • Kevin Topolski (1) +
  • Edgar Andrés Margffoy Tuay (1)
  • Dipansh Uikey (1) +
  • Matus Valo (3)
  • Christian Veenhuis (2)
  • Nicolas Vetsch (1) +
  • Isaac Virshup (7)
  • Hielke Walinga (2) +
  • Stefan van der Walt (2)
  • Warren Weckesser (7)
  • Bernhard M. Wiedemann (4)
  • Levi John Wolf (1)
  • Xuefeng Xu (4) +
  • Rory Yorke (2)
  • YoussefAli1 (1) +
  • Irwin Zaid (4) +
  • Jinzhe Zeng (1) +
  • JIMMY ZHAO (1) +

A total of 163 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 2 years ago

scipy - SciPy 1.12.0rc1

SciPy 1.12.0 Release Notes

Note: SciPy 1.12.0 is not released yet!

SciPy 1.12.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.12.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.22.4 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Experimental support for the array API standard has been added to part of scipy.special, and to all of scipy.fft and scipy.cluster. There are likely to be bugs and early feedback for usage with CuPy arrays, PyTorch tensors, and other array API compatible libraries is appreciated. Use the SCIPY_ARRAY_API environment variable for testing.
  • A new class, ShortTimeFFT, provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT.
  • Several new constructors have been added for sparse arrays, and many operations now additionally support sparse arrays, further facilitating the migration from sparse matrices.
  • A large portion of the scipy.stats API now has improved support for handling NaN values, masked arrays, and more fine-grained shape-handling. The accuracy and performance of a number of stats methods have been improved, and a number of new statistical tests and distributions have been added.

New features

scipy.cluster improvements

  • Experimental support added for the array API standard; PyTorch tensors, CuPy arrays and array API compatible array libraries are now accepted (GPU support is limited to functions with pure Python implementations). CPU arrays which can be converted to and from NumPy are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.fft improvements

  • Experimental support added for the array API standard; functions which are part of the fft array API standard extension module, as well as the Fast Hankel Transforms and the basic FFTs which are not in the extension module, now accept PyTorch tensors, CuPy arrays and array API compatible array libraries. CPU arrays which can be converted to and from NumPy arrays are supported module-wide and returned arrays will match the input type. This behaviour is enabled by setting the SCIPY_ARRAY_API environment variable before importing scipy. This experimental support is still under development and likely to contain bugs - testing is very welcome.

scipy.integrate improvements

  • Added scipy.integrate.cumulative_simpson for cumulative quadrature from sampled data using Simpson's 1/3 rule.

scipy.interpolate improvements

  • New class NdBSpline represents tensor-product splines in N dimensions. This class only knows how to evaluate a tensor product given coefficients and knot vectors. This way it generalizes BSpline for 1D data to N-D, and parallels NdPPoly (which represents N-D tensor product polynomials). Evaluations exploit the localized nature of b-splines.
  • NearestNDInterpolator.__call__ accepts **query_options, which are passed through to the KDTree.query call to find nearest neighbors. This allows, for instance, to limit the neighbor search distance and parallelize the query using the workers keyword.
  • BarycentricInterpolator now allows computing the derivatives.
  • It is now possible to change interpolation values in an existing CloughTocher2DInterpolator instance, while also saving the barycentric coordinates of interpolation points.

scipy.linalg improvements

  • Access to new low-level LAPACK functions is provided via dtgsyl and stgsyl.

scipy.ndimage improvements

scipy.optimize improvements

  • scipy.optimize.nnls is rewritten in Python and now implements the so-called fnnls or fast nnls.
  • The result object of scipy.optimize.root and scipy.optimize.root_scalar now reports the method used.
  • The callback method of scipy.optimize.differential_evolution can now be passed more detailed information via the intermediate_results keyword parameter. Also, the evolution strategy now accepts a callable for additional customization. The performance of differential_evolution has also been improved.
  • minimize method Newton-CG has been made slightly more efficient.
  • minimize method BFGS now accepts an initial estimate for the inverse of the Hessian, which allows for more efficient workflows in some circumstances. The new parameter is hess_inv0.
  • minimize methods CG, Newton-CG, and BFGS now accept parameters c1 and c2, allowing specification of the Armijo and curvature rule parameters, respectively.
  • curve_fit performance has improved due to more efficient memoization of the callable function.
  • isotonic_regression has been added to allow nonparametric isotonic regression.

scipy.signal improvements

  • freqz, freqz_zpk, and group_delay are now more accurate when fs has a default value.
  • The new class ShortTimeFFT provides a more versatile implementation of the short-time Fourier transform (STFT), its inverse (ISTFT) as well as the (cross-) spectrogram. It utilizes an improved algorithm for calculating the ISTFT based on dual windows and provides more fine-grained control of the parametrization especially in regard to scaling and phase-shift. Functionality was implemented to ease working with signal and STFT chunks. A section has been added to the "SciPy User Guide" providing algorithmic details. The functions stft, istft and spectrogram have been marked as legacy.

scipy.sparse improvements

  • sparse.linalg iterative solvers sparse.linalg.cg, sparse.linalg.cgs, sparse.linalg.bicg, sparse.linalg.bicgstab, sparse.linalg.gmres, and sparse.linalg.qmr are rewritten in Python.
  • Updated vendored SuperLU version to 6.0.1, along with a few additional fixes.
  • Sparse arrays have gained additional constructors: eye_array, random_array, block_array, and identity. kron and kronsum have been adjusted to additionally support operation on sparse arrays.
  • Sparse matrices now support a transpose with axes=(1, 0), to mirror the .T method.
  • LaplacianNd now allows selection of the largest subset of eigenvalues, and additionally now supports retrieval of the corresponding eigenvectors. The performance of LaplacianNd has also been improved.
  • The performance of dok_matrix and dok_array has been improved, and their inheritance behavior should be more robust.
  • hstack, vstack, and block_diag now work with sparse arrays, and preserve the input sparse type.
  • A new function, scipy.sparse.linalg.matrix_power, has been added, allowing for exponentiation of sparse arrays.

scipy.spatial improvements

  • Two new methods were implemented for spatial.transform.Rotation: __pow__ to raise a rotation to integer or fractional power and approx_equal to check if two rotations are approximately equal.
  • The method Rotation.align_vectors was extended to solve a constrained alignment problem where two vectors are required to be aligned precisely. Also when given a single pair of vectors, the algorithm now returns the rotation with minimal magnitude, which can be considered as a minor backward incompatible change.
  • A new representation for spatial.transform.Rotation called Davenport angles is available through from_davenport and as_davenport methods.
  • Performance improvements have been added to distance.hamming and distance.correlation.
  • Improved performance of SphericalVoronoi sort_vertices_of_regions and two dimensional area calculations.

scipy.special improvements

  • Added scipy.special.stirling2 for computation of Stirling numbers of the second kind. Both exact calculation and an asymptotic approximation (the default) are supported via exact=True and exact=False (the default) respectively.
  • Added scipy.special.betaincc for computation of the complementary incomplete Beta function and scipy.special.betainccinv for computation of its inverse.
  • Improved precision of scipy.special.betainc and scipy.special.betaincinv
  • Experimental support added for alternative backends: functions scipy.special.log_ndtr, scipy.special.ndtr, scipy.special.ndtri, scipy.special.erf, scipy.special.erfc, scipy.special.i0, scipy.special.i0e, scipy.special.i1, scipy.special.i1e, scipy.special.gammaln, scipy.special.gammainc, scipy.special.gammaincc, scipy.special.logit, and scipy.special.expit now accept PyTorch tensors and CuPy arrays. These features are still under development and likely to contain bugs, so they are disabled by default; enable them by setting a SCIPY_ARRAY_API environment variable to 1 before importing scipy. Testing is appreciated!

scipy.stats improvements

  • Added scipy.stats.quantile_test, a nonparametric test of whether a hypothesized value is the quantile associated with a specified probability. The confidence_interval method of the result object gives a confidence interval of the quantile.
  • scipy.stats.wasserstein_distance now computes the Wasserstein distance in the multidimensional case.
  • scipy.stats.sampling.FastGeneratorInversion provides a convenient interface to fast random sampling via numerical inversion of distribution CDFs.
  • scipy.stats.geometric_discrepancy adds geometric/topological discrepancy metrics for random samples.
  • scipy.stats.multivariate_normal now has a fit method for fitting distribution parameters to data via maximum likelihood estimation.
  • scipy.stats.bws_test performs the Baumgartner-Weiss-Schindler test of whether two-samples were drawn from the same distribution.
  • scipy.stats.jf_skew_t implements the Jones and Faddy skew-t distribution.
  • scipy.stats.anderson_ksamp now supports a permutation version of the test using the method parameter.
  • The fit methods of scipy.stats.halfcauchy, scipy.stats.halflogistic, and scipy.stats.halfnorm are faster and more accurate.
  • scipy.stats.beta entropy accuracy has been improved for extreme values of distribution parameters.
  • The accuracy of sf and/or isf methods have been improved for several distributions: scipy.stats.burr, scipy.stats.hypsecant, scipy.stats.kappa3, scipy.stats.loglaplace, scipy.stats.lognorm, scipy.stats.lomax, scipy.stats.pearson3, scipy.stats.rdist, and scipy.stats.pareto.
  • The following functions now support parameters axis, nan_policy, and keep_dims: scipy.stats.entropy, scipy.stats.differential_entropy, scipy.stats.variation, scipy.stats.ansari, scipy.stats.bartlett, scipy.stats.levene, scipy.stats.fligner, scipy.stats.cirmean,scipy.stats.circvar,scipy.stats.circstd,scipy.stats.tmean,scipy.stats.tvar,scipy.stats.tstd,scipy.stats.tmin,scipy.stats.tmax, andscipy.stats.tsem`.
  • The logpdf and fit methods of scipy.stats.skewnorm have been improved.
  • The beta negative binomial distribution is implemented as scipy.stats.betanbinom.
  • The speed of scipy.stats.invwishart rvs and logpdf have been improved.
  • A source of intermediate overflow in scipy.stats.boxcox_normmax with method='mle' has been eliminated, and the returned value of lmbda is constrained such that the transformed data will not overflow.
  • scipy.stats.nakagami stats is more accurate and reliable.
  • A source of intermediate overflow in scipy.norminvgauss.pdf has been eliminated.
  • Added support for masked arrays to stats.circmean, stats.circvar, stats.circstd, and stats.entropy.
  • dirichlet has gained a new covariance (cov) method.
  • Improved accuracy of multivariate_t entropy with large degrees of freedom.
  • loggamma has an improved entropy method.

Deprecated features

  • Error messages have been made clearer for objects that don't exist in the public namespace and warnings sharpened for private attributes that are not supposed to be imported at all.
  • scipy.signal.cmplx_sort has been deprecated and will be removed in SciPy 1.14. A replacement you can use is provided in the deprecation message.
  • Values the the argument initial of scipy.integrate.cumulative_trapezoid other than 0 and None are now deprecated.
  • scipy.stats.rvs_ratio_uniforms is deprecated in favour of scipy.stats.sampling.RatioUniforms
  • scipy.integrate.quadrature and scipy.integrate.romberg have been deprecated due to accuracy issues and interface shortcomings. They will be removed in SciPy 1.14. Please use scipy.integrate.quad instead.
  • Coinciding with upcoming changes to function signatures (e.g. removal of a deprecated keyword), we are deprecating positional use of keyword arguments for the affected functions, which will raise an error starting with SciPy 1.14. In some cases, this has delayed the originally announced removal date, to give time to respond to the second part of the deprecation. Affected functions are:

    • linalg.{eigh, eigvalsh, pinv}
    • integrate.simpson
    • signal.{firls, firwin, firwin2, remez}
    • sparse.linalg.{bicg, bicgstab, cg, cgs, gcrotmk, gmres, lgmres, minres, qmr, tfqmr}
    • special.comb
    • stats.kendalltau
  • All wavelet functions have been deprecated, as PyWavelets provides suitable implementations; affected functions are: signal.{daub, qmf, cascade, morlet, morlet2, ricker, cwt}

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The centered keyword of stats.qmc.LatinHypercube has been removed. Use scrambled=False instead of centered=True.

Backwards incompatible changes

Other changes

  • The arguments used to compile and link SciPy are now available via show_config.

Authors

  • Name (commits)
  • endolith (1)
  • h-vetinari (29)
  • Tom Adamczewski (3) +
  • Anudeep Adiraju (1) +
  • akeemlh (1)
  • Alex Amadori (2) +
  • Raja Yashwanth Avantsa (2) +
  • Seth Axen (1) +
  • Ross Barnowski (1)
  • Dan Barzilay (1) +
  • Ashish Bastola (1) +
  • Christoph Baumgarten (2)
  • Ben Beasley (3) +
  • Doron Behar (1)
  • Peter Bell (1)
  • Sebastian Berg (1)
  • Ben Boeckel (1) +
  • David Boetius (1) +
  • Jake Bowhay (102)
  • Larry Bradley (1) +
  • Dietrich Brunn (5)
  • Evgeni Burovski (101)
  • Matthias Bussonnier (18)
  • CJ Carey (6)
  • Colin Carroll (1) +
  • Aadya Chinubhai (1) +
  • Luca Citi (1)
  • Lucas Colley (140) +
  • com3dian (1) +
  • Anirudh Dagar (4)
  • Danni (1) +
  • Dieter Werthmüller (1)
  • John Doe (2) +
  • Philippe DONNAT (2) +
  • drestebon (1) +
  • Thomas Duvernay (1)
  • elbarso (1) +
  • emilfrost (2) +
  • Paul Estano (8) +
  • Evandro (2)
  • Franz Király (1) +
  • Nikita Furin (1) +
  • gabrielthomsen (1) +
  • Lukas Geiger (9) +
  • Artem Glebov (22) +
  • Caden Gobat (1)
  • Ralf Gommers (125)
  • Alexander Goscinski (2) +
  • Rohit Goswami (2) +
  • Olivier Grisel (1)
  • Matt Haberland (243)
  • Charles Harris (1)
  • harshilkamdar (1) +
  • Alon Hovav (2) +
  • Gert-Ludwig Ingold (1)
  • Romain Jacob (1) +
  • jcwhitehead (1) +
  • Julien Jerphanion (13)
  • He Jia (1)
  • JohnWT (1) +
  • jokasimr (1) +
  • Evan W Jones (1)
  • Karen Róbertsdóttir (1) +
  • Ganesh Kathiresan (1)
  • Robert Kern (11)
  • Andrew Knyazev (4)
  • Uwe L. Korn (1) +
  • Rishi Kulkarni (1)
  • Kale Kundert (3) +
  • Jozsef Kutas (2)
  • Kyle0 (2) +
  • Robert Langefeld (1) +
  • Jeffrey Larson (1) +
  • Jessy Lauer (1) +
  • lciti (1) +
  • Hoang Le (1) +
  • Antony Lee (5)
  • Thilo Leitzbach (4) +
  • LemonBoy (2) +
  • Ellie Litwack (8) +
  • Thomas Loke (4) +
  • Malte Londschien (1) +
  • Christian Lorentzen (6)
  • Adam Lugowski (9) +
  • lutefiskhotdish (1)
  • mainak33 (1) +
  • Ben Mares (11) +
  • mart-mihkel (2) +
  • Mateusz Sokół (24) +
  • Nikolay Mayorov (4)
  • Nicholas McKibben (1)
  • Melissa Weber Mendonça (7)
  • Kat Mistberg (2) +
  • mkiffer (1) +
  • mocquin (1) +
  • Nicolas Mokus (2) +
  • Sturla Molden (1)
  • Roberto Pastor Muela (3) +
  • Bijay Nayak (1) +
  • Andrew Nelson (105)
  • Praveer Nidamaluri (2) +
  • Lysandros Nikolaou (2)
  • Dimitri Papadopoulos Orfanos (7)
  • Pablo Rodríguez Pérez (1) +
  • Dimitri Papadopoulos (2)
  • Tirth Patel (14)
  • Kyle Paterson (1) +
  • Paul (4) +
  • Yann Pellegrini (2) +
  • Matti Picus (4)
  • Ilhan Polat (36)
  • Pranav (1) +
  • Bharat Raghunathan (1)
  • Chris Rapson (1) +
  • Matteo Raso (4)
  • Tyler Reddy (165)
  • Martin Reinecke (1)
  • Tilo Reneau-Cardoso (1) +
  • resting-dove (2) +
  • Simon Segerblom Rex (4)
  • Lucas Roberts (2)
  • Pamphile Roy (31)
  • Feras Saad (3) +
  • Atsushi Sakai (3)
  • Masahiro Sakai (2) +
  • Omar Salman (14)
  • Andrej Savikin (1) +
  • Daniel Schmitz (52)
  • Dan Schult (19)
  • Scott Shambaugh (9)
  • Sheila-nk (2) +
  • Mauro Silberberg (3) +
  • Maciej Skorski (1) +
  • Laurent Sorber (1) +
  • Albert Steppi (28)
  • Kai Striega (1)
  • Saswat Susmoy (1) +
  • Alex Szatmary (1) +
  • Søren Fuglede Jørgensen (3)
  • othmane tamri (3) +
  • Ewout ter Hoeven (1)
  • Will Tirone (1)
  • TLeitzbach (1) +
  • Kevin Topolski (1) +
  • Edgar Andrés Margffoy Tuay (1)
  • Dipansh Uikey (1) +
  • Matus Valo (3)
  • Christian Veenhuis (2)
  • Nicolas Vetsch (1) +
  • Isaac Virshup (7)
  • Hielke Walinga (2) +
  • Stefan van der Walt (2)
  • Warren Weckesser (7)
  • Bernhard M. Wiedemann (4)
  • Levi John Wolf (1)
  • Xuefeng Xu (4) +
  • Rory Yorke (2)
  • YoussefAli1 (1) +
  • Irwin Zaid (4) +
  • Jinzhe Zeng (1) +
  • JIMMY ZHAO (1) +

A total of 161 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 2 years ago

scipy - SciPy 1.11.4

SciPy 1.11.4 Release Notes

SciPy 1.11.4 is a bug-fix release with no new features compared to 1.11.3.

Authors

  • Name (commits)
  • Jake Bowhay (2)
  • Ralf Gommers (4)
  • Julien Jerphanion (2)
  • Nikolay Mayorov (2)
  • Melissa Weber Mendonça (1)
  • Tirth Patel (1)
  • Tyler Reddy (22)
  • Dan Schult (3)
  • Nicolas Vetsch (1) +

A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 2 years ago

scipy - SciPy 1.11.3

SciPy 1.11.3 Release Notes

SciPy 1.11.3 is a bug-fix release with no new features compared to 1.11.2.

Authors

  • Name (commits)
  • Jake Bowhay (2)
  • CJ Carey (1)
  • Colin Carroll (1) +
  • Anirudh Dagar (2)
  • drestebon (1) +
  • Ralf Gommers (5)
  • Matt Haberland (2)
  • Julien Jerphanion (1)
  • Uwe L. Korn (1) +
  • Ellie Litwack (2)
  • Andrew Nelson (5)
  • Bharat Raghunathan (1)
  • Tyler Reddy (37)
  • Søren Fuglede Jørgensen (2)
  • Hielke Walinga (1) +
  • Warren Weckesser (1)
  • Bernhard M. Wiedemann (1)

A total of 17 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 2 years ago

scipy - SciPy 1.11.2

SciPy 1.11.2 Release Notes

SciPy 1.11.2 is a bug-fix release with no new features compared to 1.11.1. Python 3.12 and musllinux wheels are provided with this release.

Authors

  • Name (commits)
  • Evgeni Burovski (2)
  • CJ Carey (3)
  • Dieter Werthmüller (1)
  • elbarso (1) +
  • Ralf Gommers (2)
  • Matt Haberland (1)
  • jokasimr (1) +
  • Thilo Leitzbach (1) +
  • LemonBoy (1) +
  • Ellie Litwack (2) +
  • Sturla Molden (1)
  • Andrew Nelson (5)
  • Tyler Reddy (39)
  • Daniel Schmitz (6)
  • Dan Schult (2)
  • Albert Steppi (1)
  • Matus Valo (1)
  • Stefan van der Walt (1)

A total of 18 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 3 years ago

scipy - SciPy 1.11.1

SciPy 1.11.1 Release Notes

SciPy 1.11.1 is a bug-fix release with no new features compared to 1.11.0. In particular, a licensing issue discovered after the release of 1.11.0 has been addressed.

Authors

  • Name (commits)
  • h-vetinari (1)
  • Robert Kern (1)
  • Ilhan Polat (4)
  • Tyler Reddy (8)

A total of 4 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 3 years ago

scipy - SciPy 1.11.0

SciPy 1.11.0 Release Notes

SciPy 1.11.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.11.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.21.6 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Several scipy.sparse array API improvements, including sparse.sparray, a new public base class distinct from the older sparse.spmatrix class, proper 64-bit index support, and numerous deprecations paving the way to a modern sparse array experience.
  • scipy.stats added tools for survival analysis, multiple hypothesis testing, sensitivity analysis, and working with censored data.
  • A new function was added for quasi-Monte Carlo integration, and linear algebra functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage functions, facilitating analysis of stacked image data.

New features

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad for quasi-Monte Carlo integration.
  • For an even number of points, scipy.integrate.simpson now calculates a parabolic segment over the last three points which gives improved accuracy over the previous implementation.

scipy.cluster improvements

  • disjoint_set has a new method subset_size for providing the size of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto SI prefixes were added.

scipy.linalg improvements

  • scipy.linalg.det is improved and now accepts nD-arrays.
  • scipy.linalg.lu is improved and now accepts nD-arrays. With the new p_indices switch the output permutation argument can be 1D (n,) permutation index instead of the full (n, n) array.

scipy.ndimage improvements

  • axes argument was added to rank_filter, percentile_filter, median_filter, uniform_filter, minimum_filter, maximum_filter, and gaussian_filter, which can be useful for processing stacks of image data.

scipy.optimize improvements

  • scipy.optimize.linprog now passes unrecognized options directly to HiGHS.
  • scipy.optimize.root_scalar now uses Newton's method to be used without providing fprime and the secant method to be used without a second guess.
  • scipy.optimize.lsq_linear now accepts bounds arguments of type scipy.optimize.Bounds.
  • scipy.optimize.minimize method='cobyla' now supports simple bound constraints.
  • Users can opt into a new callback interface for most methods of scipy.optimize.minimize: If the provided callback callable accepts a single keyword argument, intermediate_result, scipy.optimize.minimize now passes both the current solution and the optimal value of the objective function to the callback as an instance of scipy.optimize.OptimizeResult. It also allows the user to terminate optimization by raising a StopIteration exception from the callback function. scipy.optimize.minimize will return normally, and the latest solution information is provided in the result object.
  • scipy.optimize.curve_fit now supports an optional nan_policy argument.
  • scipy.optimize.shgo now has parallelization with the workers argument, symmetry arguments that can improve performance, class-based design to improve usability, and generally improved performance.

scipy.signal improvements

  • istft has an improved warning message when the NOLA condition fails.

scipy.sparse improvements

  • A new public base class scipy.sparse.sparray was introduced, allowing further extension of the sparse array API (such as the support for 1-dimensional sparse arrays) without breaking backwards compatibility. isinstance(x, scipy.sparse.sparray) to select the new sparse array classes, while isinstance(x, scipy.sparse.spmatrix) selects only the old sparse matrix classes.
  • Division of sparse arrays by a dense array now returns sparse arrays.
  • scipy.sparse.isspmatrix now only returns True for the sparse matrices instances. scipy.sparse.issparse now has to be used instead to check for instances of sparse arrays or instances of sparse matrices.
  • Sparse arrays constructed with int64 indices will no longer automatically downcast to int32.
  • The argmin and argmax methods now return the correct result when explicit zeros are present.

scipy.sparse.linalg improvements

  • dividing LinearOperator by a number now returns a _ScaledLinearOperator
  • LinearOperator now supports right multiplication by arrays
  • lobpcg should be more efficient following removal of an extraneous QR decomposition.

scipy.spatial improvements

  • Usage of new C++ backend for additional distance metrics, the majority of which will see substantial performance improvements, though a few minor regressions are known. These are focused on distances between boolean arrays.

scipy.special improvements

  • The factorial functions factorial, factorial2 and factorialk were made consistent in their behavior (in terms of dimensionality, errors etc.). Additionally, factorial2 can now handle arrays with exact=True, and factorialk can handle arrays.

scipy.stats improvements

New Features

  • scipy.stats.sobol_indices, a method to compute Sobol' sensitivity indices.
  • scipy.stats.dunnett, which performs Dunnett's test of the means of multiple experimental groups against the mean of a control group.
  • scipy.stats.ecdf for computing the empirical CDF and complementary CDF (survival function / SF) from uncensored or right-censored data. This function is also useful for survival analysis / Kaplan-Meier estimation.
  • scipy.stats.logrank to compare survival functions underlying samples.
  • scipy.stats.false_discovery_control for adjusting p-values to control the false discovery rate of multiple hypothesis tests using the Benjamini-Hochberg or Benjamini-Yekutieli procedures.
  • scipy.stats.CensoredData to represent censored data. It can be used as input to the fit method of univariate distributions and to the new ecdf function.
  • Filliben's goodness of fit test as method='Filliben' of scipy.stats.goodness_of_fit.
  • scipy.stats.ttest_ind has a new method, confidence_interval for computing a confidence interval of the difference between means.
  • scipy.stats.MonteCarloMethod, scipy.stats.PermutationMethod, and scipy.stats.BootstrapMethod are new classes to configure resampling and/or Monte Carlo versions of hypothesis tests. They can currently be used with scipy.stats.pearsonr.

Statistical Distributions

  • Added the von-Mises Fisher distribution as scipy.stats.vonmises_fisher. This distribution is the most common analogue of the normal distribution on the unit sphere.
  • Added the relativistic Breit-Wigner distribution as scipy.stats.rel_breitwigner. It is used in high energy physics to model resonances.
  • Added the Dirichlet multinomial distribution as scipy.stats.dirichlet_multinomial.
  • Improved the speed and precision of several univariate statistical distributions.

    • scipy.stats.anglit sf
    • scipy.stats.beta entropy
    • scipy.stats.betaprime cdf, sf, ppf
    • scipy.stats.chi entropy
    • scipy.stats.chi2 entropy
    • scipy.stats.dgamma entropy, cdf, sf, ppf, and isf
    • scipy.stats.dweibull entropy, sf, and isf
    • scipy.stats.exponweib sf and isf
    • scipy.stats.f entropy
    • scipy.stats.foldcauchy sf
    • scipy.stats.foldnorm cdf and sf
    • scipy.stats.gamma entropy
    • scipy.stats.genexpon ppf, isf, rvs
    • scipy.stats.gengamma entropy
    • scipy.stats.geom entropy
    • scipy.stats.genlogistic entropy, logcdf, sf, ppf, and isf
    • scipy.stats.genhyperbolic cdf and sf
    • scipy.stats.gibrat sf and isf
    • scipy.stats.gompertz entropy, sf. and isf
    • scipy.stats.halflogistic sf, and isf
    • scipy.stats.halfcauchy sf and isf
    • scipy.stats.halfnorm cdf, sf, and isf
    • scipy.stats.invgamma entropy
    • scipy.stats.invgauss entropy
    • scipy.stats.johnsonsb pdf, cdf, sf, ppf, and isf
    • scipy.stats.johnsonsu pdf, sf, isf, and stats
    • scipy.stats.lognorm fit
    • scipy.stats.loguniform entropy, logpdf, pdf, cdf, ppf, and stats
    • scipy.stats.maxwell sf and isf
    • scipy.stats.nakagami entropy
    • scipy.stats.powerlaw sf
    • scipy.stats.powerlognorm logpdf, logsf, sf, and isf
    • scipy.stats.powernorm sf and isf
    • scipy.stats.t entropy, logpdf, and pdf
    • scipy.stats.truncexpon sf, and isf
    • scipy.stats.truncnorm entropy
    • scipy.stats.truncpareto fit
    • scipy.stats.vonmises fit
  • scipy.stats.multivariate_t now has cdf and entropy methods.

  • scipy.stats.multivariate_normal, scipy.stats.matrix_normal, and scipy.stats.invwishart now have an entropy method.

Other Improvements

  • scipy.stats.monte_carlo_test now supports multi-sample statistics.
  • scipy.stats.bootstrap can now produce one-sided confidence intervals.
  • scipy.stats.rankdata performance was improved for method=ordinal and method=dense.
  • scipy.stats.moment now supports non-central moment calculation.
  • scipy.stats.anderson now supports the weibull_min distribution.
  • scipy.stats.sem and scipy.stats.iqr now support axis, nan_policy, and masked array input.

Deprecated features

  • Multi-Ellipsis sparse matrix indexing has been deprecated and will be removed in SciPy 1.13.
  • Several methods were deprecated for sparse arrays: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were deprecated. Sparse matrix types are not affected.
  • The scipy.linalg functions tri, triu & tril are deprecated and will be removed in SciPy 1.13. Users are recommended to use the NumPy versions of these functions with identical names.
  • The scipy.signal functions bspline, quadratic & cubic are deprecated and will be removed in SciPy 1.13. Users are recommended to use scipy.interpolate.BSpline instead.
  • The even keyword of scipy.integrate.simpson is deprecated and will be removed in SciPy 1.13.0. Users should leave this as the default as this gives improved accuracy compared to the other methods.
  • Using exact=True when passing integers in a float array to factorial is deprecated and will be removed in SciPy 1.13.0.
  • float128 and object dtypes are deprecated for scipy.signal.medfilt and scipy.signal.order_filter
  • The functions scipy.signal.{lsim2, impulse2, step2} had long been deprecated in documentation only. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0.
  • Importing window functions directly from scipy.window has been soft deprecated since SciPy 1.1.0. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0. Users should instead import them from scipy.signal.window or use the convenience function scipy.signal.get_window.

Backwards incompatible changes

  • The default for the legacy keyword of scipy.special.comb has changed from True to False, as announced since its introduction.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The n keyword has been removed from scipy.stats.moment.
  • The alpha keyword has been removed from scipy.stats.interval.
  • The misspelt gilbrat distribution has been removed (use scipy.stats.gibrat).
  • The deprecated spelling of the kulsinski distance metric has been removed (use scipy.spatial.distance.kulczynski1).
  • The vertices keyword of scipy.spatial.Delauney.qhull has been removed (use simplices).
  • The residual property of scipy.sparse.csgraph.maximum_flow has been removed (use flow).
  • The extradoc keyword of scipy.stats.rv_continuous, scipy.stats.rv_discrete and scipy.stats.rv_sample has been removed.
  • The sym_pos keyword of scipy.linalg.solve has been removed.
  • The scipy.optimize.minimize function now raises an error for x0 with x0.ndim > 1.
  • In scipy.stats.mode, the default value of keepdims is now False, and support for non-numeric input has been removed.
  • The function scipy.signal.lsim does not support non-uniform time steps anymore.

Other changes

  • Rewrote the source build docs and restructured the contributor guide.
  • Improved support for cross-compiling with meson build system.
  • MyST-NB notebook infrastructure has been added to our documentation.

Authors

  • h-vetinari (69)
  • Oriol Abril-Pla (1) +
  • Tom Adamczewski (1) +
  • Anton Akhmerov (13)
  • Andrey Akinshin (1) +
  • alice (1) +
  • Oren Amsalem (1)
  • Ross Barnowski (13)
  • Christoph Baumgarten (2)
  • Dawson Beatty (1) +
  • Doron Behar (1) +
  • Peter Bell (1)
  • John Belmonte (1) +
  • boeleman (1) +
  • Jack Borchanian (1) +
  • Matt Borland (3) +
  • Jake Bowhay (41)
  • Larry Bradley (1) +
  • Sienna Brent (1) +
  • Matthew Brett (1)
  • Evgeni Burovski (39)
  • Matthias Bussonnier (2)
  • Maria Cann (1) +
  • Alfredo Carella (1) +
  • CJ Carey (34)
  • Hood Chatham (2)
  • Anirudh Dagar (3)
  • Alberto Defendi (1) +
  • Pol del Aguila (1) +
  • Hans Dembinski (1)
  • Dennis (1) +
  • Vinayak Dev (1) +
  • Thomas Duvernay (1)
  • DWesl (4)
  • Stefan Endres (66)
  • Evandro (1) +
  • Tom Eversdijk (2) +
  • Isuru Fernando (1)
  • Franz Forstmayr (4)
  • Joseph Fox-Rabinovitz (1)
  • Stefano Frazzetto (1) +
  • Neil Girdhar (1)
  • Caden Gobat (1) +
  • Ralf Gommers (153)
  • GonVas (1) +
  • Marco Gorelli (1)
  • Brett Graham (2) +
  • Matt Haberland (388)
  • harshvardhan2707 (1) +
  • Alex Herbert (1) +
  • Guillaume Horel (1)
  • Geert-Jan Huizing (1) +
  • Jakob Jakobson (2)
  • Julien Jerphanion (10)
  • jyuv (2)
  • Rajarshi Karmakar (1) +
  • Ganesh Kathiresan (3) +
  • Robert Kern (4)
  • Andrew Knyazev (4)
  • Sergey Koposov (1)
  • Rishi Kulkarni (2) +
  • Eric Larson (1)
  • Zoufiné Lauer-Bare (2) +
  • Antony Lee (3)
  • Gregory R. Lee (8)
  • Guillaume Lemaitre (2) +
  • lilinjie (2) +
  • Yannis Linardos (1) +
  • Christian Lorentzen (5)
  • Loïc Estève (1)
  • Adam Lugowski (1) +
  • Charlie Marsh (2) +
  • Boris Martin (1) +
  • Nicholas McKibben (11)
  • Melissa Weber Mendonça (58)
  • Michał Górny (1) +
  • Jarrod Millman (5)
  • Stefanie Molin (2) +
  • Mark W. Mueller (1) +
  • mustafacevik (1) +
  • Takumasa N (1) +
  • nboudrie (1)
  • Andrew Nelson (112)
  • Nico Schlömer (4)
  • Lysandros Nikolaou (2) +
  • Kyle Oman (1)
  • OmarManzoor (2) +
  • Simon Ott (1) +
  • Geoffrey Oxberry (1) +
  • Geoffrey M. Oxberry (2) +
  • Sravya papaganti (1) +
  • Tirth Patel (2)
  • Ilhan Polat (32)
  • Quentin Barthélemy (1)
  • Matteo Raso (12) +
  • Tyler Reddy (143)
  • Lucas Roberts (1)
  • Pamphile Roy (225)
  • Jordan Rupprecht (1) +
  • Atsushi Sakai (11)
  • Omar Salman (7) +
  • Leo Sandler (1) +
  • Ujjwal Sarswat (3) +
  • Saumya (1) +
  • Daniel Schmitz (79)
  • Henry Schreiner (2) +
  • Dan Schult (8) +
  • Eli Schwartz (6)
  • Tomer Sery (2) +
  • Scott Shambaugh (10) +
  • Gagandeep Singh (1)
  • Ethan Steinberg (6) +
  • stepeos (2) +
  • Albert Steppi (3)
  • Strahinja Lukić (1)
  • Kai Striega (4)
  • suen-bit (1) +
  • Tartopohm (2)
  • Logan Thomas (2) +
  • Jacopo Tissino (1) +
  • Matus Valo (12) +
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1) +
  • Isaac Virshup (3)
  • Stefan van der Walt (14)
  • Warren Weckesser (63)
  • windows-server-2003 (1)
  • Levi John Wolf (3)
  • Nobel Wong (1) +
  • Benjamin Yeh (1) +
  • Rory Yorke (1)
  • Younes (2) +
  • Zaikun ZHANG (1) +
  • Alex Zverianskii (1) +

A total of 134 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 3 years ago

scipy - SciPy 1.11.0rc2

SciPy 1.11.0 Release Notes

Note: SciPy 1.11.0 is not released yet!

SciPy 1.11.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.11.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.21.6 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Several scipy.sparse array API improvements, including sparse.sparray, a new public base class distinct from the older sparse.spmatrix class, proper 64-bit index support, and numerous deprecations paving the way to a modern sparse array experience.
  • scipy.stats added tools for survival analysis, multiple hypothesis testing, sensitivity analysis, and working with censored data.
  • A new function was added for quasi-Monte Carlo integration, and linear algebra functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage functions, facilitating analysis of stacked image data.

New features

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad for quasi-Monte Carlo integration.
  • For an even number of points, scipy.integrate.simpson now calculates a parabolic segment over the last three points which gives improved accuracy over the previous implementation.

scipy.cluster improvements

  • disjoint_set has a new method subset_size for providing the size of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto SI prefixes were added.

scipy.linalg improvements

  • scipy.linalg.det is improved and now accepts nD-arrays.
  • scipy.linalg.lu is improved and now accepts nD-arrays. With the new p_indices switch the output permutation argument can be 1D (n,) permutation index instead of the full (n, n) array.

scipy.ndimage improvements

  • axes argument was added to rank_filter, percentile_filter, median_filter, uniform_filter, minimum_filter, maximum_filter, and gaussian_filter, which can be useful for processing stacks of image data.

scipy.optimize improvements

  • scipy.optimize.linprog now passes unrecognized options directly to HiGHS.
  • scipy.optimize.root_scalar now uses Newton's method to be used without providing fprime and the secant method to be used without a second guess.
  • scipy.optimize.lsq_linear now accepts bounds arguments of type scipy.optimize.Bounds.
  • scipy.optimize.minimize method='cobyla' now supports simple bound constraints.
  • Users can opt into a new callback interface for most methods of scipy.optimize.minimize: If the provided callback callable accepts a single keyword argument, intermediate_result, scipy.optimize.minimize now passes both the current solution and the optimal value of the objective function to the callback as an instance of scipy.optimize.OptimizeResult. It also allows the user to terminate optimization by raising a StopIteration exception from the callback function. scipy.optimize.minimize will return normally, and the latest solution information is provided in the result object.
  • scipy.optimize.curve_fit now supports an optional nan_policy argument.
  • scipy.optimize.shgo now has parallelization with the workers argument, symmetry arguments that can improve performance, class-based design to improve usability, and generally improved performance.

scipy.signal improvements

  • istft has an improved warning message when the NOLA condition fails.

scipy.sparse improvements

  • A new public base class scipy.sparse.sparray was introduced, allowing further extension of the sparse array API (such as the support for 1-dimensional sparse arrays) without breaking backwards compatibility. isinstance(x, scipy.sparse.sparray) to select the new sparse array classes, while isinstance(x, scipy.sparse.spmatrix) selects only the old sparse matrix classes.
  • Division of sparse arrays by a dense array now returns sparse arrays.
  • scipy.sparse.isspmatrix now only returns True for the sparse matrices instances. scipy.sparse.issparse now has to be used instead to check for instances of sparse arrays or instances of sparse matrices.
  • Sparse arrays constructed with int64 indices will no longer automatically downcast to int32.
  • The argmin and argmax methods now return the correct result when explicit zeros are present.

scipy.sparse.linalg improvements

  • dividing LinearOperator by a number now returns a _ScaledLinearOperator
  • LinearOperator now supports right multiplication by arrays
  • lobpcg should be more efficient following removal of an extraneous QR decomposition.

scipy.spatial improvements

  • Usage of new C++ backend for additional distance metrics, the majority of which will see substantial performance improvements, though a few minor regressions are known. These are focused on distances between boolean arrays.

scipy.special improvements

  • The factorial functions factorial, factorial2 and factorialk were made consistent in their behavior (in terms of dimensionality, errors etc.). Additionally, factorial2 can now handle arrays with exact=True, and factorialk can handle arrays.

scipy.stats improvements

New Features

  • scipy.stats.sobol_indices, a method to compute Sobol' sensitivity indices.
  • scipy.stats.dunnett, which performs Dunnett's test of the means of multiple experimental groups against the mean of a control group.
  • scipy.stats.ecdf for computing the empirical CDF and complementary CDF (survival function / SF) from uncensored or right-censored data. This function is also useful for survival analysis / Kaplan-Meier estimation.
  • scipy.stats.logrank to compare survival functions underlying samples.
  • scipy.stats.false_discovery_control for adjusting p-values to control the false discovery rate of multiple hypothesis tests using the Benjamini-Hochberg or Benjamini-Yekutieli procedures.
  • scipy.stats.CensoredData to represent censored data. It can be used as input to the fit method of univariate distributions and to the new ecdf function.
  • Filliben's goodness of fit test as method='Filliben' of scipy.stats.goodness_of_fit.
  • scipy.stats.ttest_ind has a new method, confidence_interval for computing a confidence interval of the difference between means.
  • scipy.stats.MonteCarloMethod, scipy.stats.PermutationMethod, and scipy.stats.BootstrapMethod are new classes to configure resampling and/or Monte Carlo versions of hypothesis tests. They can currently be used with scipy.stats.pearsonr.

Statistical Distributions

  • Added the von-Mises Fisher distribution as scipy.stats.vonmises_fisher. This distribution is the most common analogue of the normal distribution on the unit sphere.
  • Added the relativistic Breit-Wigner distribution as scipy.stats.rel_breitwigner. It is used in high energy physics to model resonances.
  • Added the Dirichlet multinomial distribution as scipy.stats.dirichlet_multinomial.
  • Improved the speed and precision of several univariate statistical distributions.

    • scipy.stats.anglit sf
    • scipy.stats.beta entropy
    • scipy.stats.betaprime cdf, sf, ppf
    • scipy.stats.chi entropy
    • scipy.stats.chi2 entropy
    • scipy.stats.dgamma entropy, cdf, sf, ppf, and isf
    • scipy.stats.dweibull entropy, sf, and isf
    • scipy.stats.exponweib sf and isf
    • scipy.stats.f entropy
    • scipy.stats.foldcauchy sf
    • scipy.stats.foldnorm cdf and sf
    • scipy.stats.gamma entropy
    • scipy.stats.genexpon ppf, isf, rvs
    • scipy.stats.gengamma entropy
    • scipy.stats.geom entropy
    • scipy.stats.genlogistic entropy, logcdf, sf, ppf, and isf
    • scipy.stats.genhyperbolic cdf and sf
    • scipy.stats.gibrat sf and isf
    • scipy.stats.gompertz entropy, sf. and isf
    • scipy.stats.halflogistic sf, and isf
    • scipy.stats.halfcauchy sf and isf
    • scipy.stats.halfnorm cdf, sf, and isf
    • scipy.stats.invgamma entropy
    • scipy.stats.invgauss entropy
    • scipy.stats.johnsonsb pdf, cdf, sf, ppf, and isf
    • scipy.stats.johnsonsu pdf, sf, isf, and stats
    • scipy.stats.lognorm fit
    • scipy.stats.loguniform entropy, logpdf, pdf, cdf, ppf, and stats
    • scipy.stats.maxwell sf and isf
    • scipy.stats.nakagami entropy
    • scipy.stats.powerlaw sf
    • scipy.stats.powerlognorm logpdf, logsf, sf, and isf
    • scipy.stats.powernorm sf and isf
    • scipy.stats.t entropy, logpdf, and pdf
    • scipy.stats.truncexpon sf, and isf
    • scipy.stats.truncnorm entropy
    • scipy.stats.truncpareto fit
    • scipy.stats.vonmises fit
  • scipy.stats.multivariate_t now has cdf and entropy methods.

  • scipy.stats.multivariate_normal, scipy.stats.matrix_normal, and scipy.stats.invwishart now have an entropy method.

Other Improvements

  • scipy.stats.monte_carlo_test now supports multi-sample statistics.
  • scipy.stats.bootstrap can now produce one-sided confidence intervals.
  • scipy.stats.rankdata performance was improved for method=ordinal and method=dense.
  • scipy.stats.moment now supports non-central moment calculation.
  • scipy.stats.anderson now supports the weibull_min distribution.
  • scipy.stats.sem and scipy.stats.iqr now support axis, nan_policy, and masked array input.

Deprecated features

  • Multi-Ellipsis sparse matrix indexing has been deprecated and will be removed in SciPy 1.13.
  • Several methods were deprecated for sparse arrays: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were deprecated. Sparse matrix types are not affected.
  • The scipy.linalg functions tri, triu & tril are deprecated and will be removed in SciPy 1.13. Users are recommended to use the NumPy versions of these functions with identical names.
  • The scipy.signal functions bspline, quadratic & cubic are deprecated and will be removed in SciPy 1.13. Users are recommended to use scipy.interpolate.BSpline instead.
  • The even keyword of scipy.integrate.simpson is deprecated and will be removed in SciPy 1.13.0. Users should leave this as the default as this gives improved accuracy compared to the other methods.
  • Using exact=True when passing integers in a float array to factorial is deprecated and will be removed in SciPy 1.13.0.
  • float128 and object dtypes are deprecated for scipy.signal.medfilt and scipy.signal.order_filter
  • The functions scipy.signal.{lsim2, impulse2, step2} had long been deprecated in documentation only. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0.
  • Importing window functions directly from scipy.window has been soft deprecated since SciPy 1.1.0. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0. Users should instead import them from scipy.signal.window or use the convenience function scipy.signal.get_window.

Backwards incompatible changes

  • The default for the legacy keyword of scipy.special.comb has changed from True to False, as announced since its introduction.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The n keyword has been removed from scipy.stats.moment.
  • The alpha keyword has been removed from scipy.stats.interval.
  • The misspelt gilbrat distribution has been removed (use scipy.stats.gibrat).
  • The deprecated spelling of the kulsinski distance metric has been removed (use scipy.spatial.distance.kulczynski1).
  • The vertices keyword of scipy.spatial.Delauney.qhull has been removed (use simplices).
  • The residual property of scipy.sparse.csgraph.maximum_flow has been removed (use flow).
  • The extradoc keyword of scipy.stats.rv_continuous, scipy.stats.rv_discrete and scipy.stats.rv_sample has been removed.
  • The sym_pos keyword of scipy.linalg.solve has been removed.
  • The scipy.optimize.minimize function now raises an error for x0 with x0.ndim > 1.
  • In scipy.stats.mode, the default value of keepdims is now False, and support for non-numeric input has been removed.
  • The function scipy.signal.lsim does not support non-uniform time steps anymore.

Other changes

  • Rewrote the source build docs and restructured the contributor guide.
  • Improved support for cross-compiling with meson build system.
  • MyST-NB notebook infrastructure has been added to our documentation.

Authors

  • h-vetinari (69)
  • Oriol Abril-Pla (1) +
  • Tom Adamczewski (1) +
  • Anton Akhmerov (13)
  • Andrey Akinshin (1) +
  • alice (1) +
  • Oren Amsalem (1)
  • Ross Barnowski (13)
  • Christoph Baumgarten (2)
  • Dawson Beatty (1) +
  • Doron Behar (1) +
  • Peter Bell (1)
  • John Belmonte (1) +
  • boeleman (1) +
  • Jack Borchanian (1) +
  • Matt Borland (3) +
  • Jake Bowhay (40)
  • Larry Bradley (1) +
  • Sienna Brent (1) +
  • Matthew Brett (1)
  • Evgeni Burovski (39)
  • Matthias Bussonnier (2)
  • Maria Cann (1) +
  • Alfredo Carella (1) +
  • CJ Carey (34)
  • Hood Chatham (2)
  • Anirudh Dagar (3)
  • Alberto Defendi (1) +
  • Pol del Aguila (1) +
  • Hans Dembinski (1)
  • Dennis (1) +
  • Vinayak Dev (1) +
  • Thomas Duvernay (1)
  • DWesl (4)
  • Stefan Endres (66)
  • Evandro (1) +
  • Tom Eversdijk (2) +
  • Isuru Fernando (1)
  • Franz Forstmayr (4)
  • Joseph Fox-Rabinovitz (1)
  • Stefano Frazzetto (1) +
  • Neil Girdhar (1)
  • Caden Gobat (1) +
  • Ralf Gommers (152)
  • GonVas (1) +
  • Marco Gorelli (1)
  • Brett Graham (2) +
  • Matt Haberland (390)
  • harshvardhan2707 (1) +
  • Alex Herbert (1) +
  • Guillaume Horel (1)
  • Geert-Jan Huizing (1) +
  • Jakob Jakobson (2)
  • Julien Jerphanion (14)
  • jyuv (2)
  • Rajarshi Karmakar (1) +
  • Ganesh Kathiresan (3) +
  • Robert Kern (4)
  • Andrew Knyazev (4)
  • Sergey Koposov (1)
  • Rishi Kulkarni (2) +
  • Eric Larson (1)
  • Zoufiné Lauer-Bare (2) +
  • Antony Lee (3)
  • Gregory R. Lee (8)
  • Guillaume Lemaitre (2) +
  • lilinjie (2) +
  • Yannis Linardos (1) +
  • Christian Lorentzen (5)
  • Loïc Estève (1)
  • Adam Lugowski (1) +
  • Charlie Marsh (2) +
  • Boris Martin (1) +
  • Nicholas McKibben (11)
  • Melissa Weber Mendonça (58)
  • Michał Górny (1) +
  • Jarrod Millman (5)
  • Stefanie Molin (2) +
  • Mark W. Mueller (1) +
  • mustafacevik (1) +
  • Takumasa N (1) +
  • nboudrie (1)
  • Andrew Nelson (112)
  • Nico Schlömer (4)
  • Lysandros Nikolaou (2) +
  • Kyle Oman (1)
  • OmarManzoor (2) +
  • Simon Ott (1) +
  • Geoffrey Oxberry (1) +
  • Geoffrey M. Oxberry (2) +
  • Sravya papaganti (1) +
  • Tirth Patel (2)
  • Ilhan Polat (32)
  • Quentin Barthélemy (1)
  • Matteo Raso (12) +
  • Tyler Reddy (131)
  • Lucas Roberts (1)
  • Pamphile Roy (225)
  • Jordan Rupprecht (1) +
  • Atsushi Sakai (11)
  • Omar Salman (7) +
  • Leo Sandler (1) +
  • Ujjwal Sarswat (3) +
  • Saumya (1) +
  • Daniel Schmitz (79)
  • Henry Schreiner (2) +
  • Dan Schult (8) +
  • Eli Schwartz (6)
  • Tomer Sery (2) +
  • Scott Shambaugh (10) +
  • Gagandeep Singh (1)
  • Ethan Steinberg (6) +
  • stepeos (2) +
  • Albert Steppi (3)
  • Strahinja Lukić (1)
  • Kai Striega (4)
  • suen-bit (1) +
  • Tartopohm (2)
  • Logan Thomas (2) +
  • Jacopo Tissino (1) +
  • Matus Valo (12) +
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1) +
  • Isaac Virshup (3)
  • Stefan van der Walt (14)
  • Warren Weckesser (63)
  • windows-server-2003 (1)
  • Levi John Wolf (3)
  • Nobel Wong (1) +
  • Benjamin Yeh (1) +
  • Rory Yorke (1)
  • Younes (2) +
  • Zaikun ZHANG (1) +
  • Alex Zverianskii (1) +

A total of 134 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 3 years ago

scipy - SciPy 1.11.0rc1

SciPy 1.11.0 Release Notes

Note: SciPy 1.11.0 is not released yet!

SciPy 1.11.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.11.x branch, and on adding new features on the main branch.

This release requires Python 3.9+ and NumPy 1.21.6 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • Several scipy.sparse array API improvements, including a new public base class distinct from the older matrix class, proper 64-bit index support, and numerous deprecations paving the way to a modern sparse array experience.
  • Added three new statistical distributions, and wide-ranging performance and precision improvements to several other statistical distributions.
  • A new function was added for quasi-Monte Carlo integration, and linear algebra functions det and lu now accept nD-arrays.
  • An axes argument was added broadly to ndimage functions, facilitating analysis of stacked image data.

New features

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad for quasi-Monte Carlo integration.
  • For an even number of points, scipy.integrate.simpson now calculates a parabolic segment over the last three points which gives improved accuracy over the previous implementation.

scipy.cluster improvements

  • disjoint_set has a new method subset_size for providing the size of a particular subset.

scipy.constants improvements

  • The quetta, ronna, ronto, and quecto SI prefixes were added.

scipy.linalg improvements

  • scipy.linalg.det is improved and now accepts nD-arrays.
  • scipy.linalg.lu is improved and now accepts nD-arrays. With the new p_indices switch the output permutation argument can be 1D (n,) permutation index instead of the full (n, n) array.

scipy.ndimage improvements

  • axes argument was added to rank_filter, percentile_filter, median_filter, uniform_filter, minimum_filter, maximum_filter, and gaussian_filter, which can be useful for processing stacks of image data.

scipy.optimize improvements

  • scipy.optimize.linprog now passes unrecognized options directly to HiGHS.
  • scipy.optimize.root_scalar now uses Newton's method to be used without providing fprime and the secant method to be used without a second guess.
  • scipy.optimize.lsq_linear now accepts bounds arguments of type scipy.optimize.Bounds.
  • scipy.optimize.minimize method='cobyla' now supports simple bound constraints.
  • Users can opt into a new callback interface for most methods of scipy.optimize.minimize: If the provided callback callable accepts a single keyword argument, intermediate_result, scipy.optimize.minimize now passes both the current solution and the optimal value of the objective function to the callback as an instance of scipy.optimize.OptimizeResult. It also allows the user to terminate optimization by raising a StopIteration exception from the callback function. scipy.optimize.minimize will return normally, and the latest solution information is provided in the result object.
  • scipy.optimize.curve_fit now supports an optional nan_policy argument.
  • scipy.optimize.shgo now has parallelization with the workers argument, symmetry arguments that can improve performance, class-based design to improve usability, and generally improved performance.

scipy.signal improvements

  • istft has an improved warning message when the NOLA condition fails.

scipy.sparse improvements

  • scipy.sparse array (not matrix) classes now return a sparse array instead of a dense array when divided by a dense array.
  • A new public base class scipy.sparse.sparray was introduced, allowing isinstance(x, scipy.sparse.sparray) to select the new sparse array classes, while isinstance(x, scipy.sparse.spmatrix) selects only the old sparse matrix types.
  • The behavior of scipy.sparse.isspmatrix() was updated to return True for only the sparse matrix types. If you want to check for either sparse arrays or sparse matrices, use scipy.sparse.issparse() instead. (Previously, these had identical behavior.)
  • Sparse arrays constructed with 64-bit indices will no longer automatically downcast to 32-bit.
  • A new scipy.sparse.diags_array function was added, which behaves like the existing scipy.sparse.diags function except that it returns a sparse array instead of a sparse matrix.
  • argmin and argmax methods now return the correct result when no implicit zeros are present.

scipy.sparse.linalg improvements

  • dividing LinearOperator by a number now returns a _ScaledLinearOperator
  • LinearOperator now supports right multiplication by arrays
  • lobpcg should be more efficient following removal of an extraneous QR decomposition.

scipy.spatial improvements

  • Usage of new C++ backend for additional distance metrics, the majority of which will see substantial performance improvements, though a few minor regressions are known. These are focused on distances between boolean arrays.

scipy.special improvements

  • The factorial functions factorial, factorial2 and factorialk were made consistent in their behavior (in terms of dimensionality, errors etc.). Additionally, factorial2 can now handle arrays with exact=True, and factorialk can handle arrays.

scipy.stats improvements

New Features

  • scipy.stats.sobol_indices, a method to compute Sobol' sensitivity indices.
  • scipy.stats.dunnett, which performs Dunnett's test of the means of multiple experimental groups against the mean of a control group.
  • scipy.stats.ecdf for computing the empirical CDF and complementary CDF (survival function / SF) from uncensored or right-censored data. This function is also useful for survival analysis / Kaplain-Meier estimation.
  • scipy.stats.logrank to compare survival functions underlying samples.
  • scipy.stats.false_discovery_control for adjusting p-values to control the false discovery rate of multiple hypothesis tests using the Benjamini-Hochberg or Benjamini-Yekutieli procedures.
  • scipy.stats.CensoredData to represent censored data. It can be used as input to the fit method of univariate distributions and to the new ecdf function.
  • Filliben's goodness of fit test as method='Filliben' of scipy.stats.goodness_of_fit.
  • scipy.stats.ttest_ind has a new method, confidence_interval for computing confidence intervals.
  • scipy.stats.MonteCarloMethod, scipy.stats.PermutationMethod, and scipy.stats.BootstrapMethod are new classes to configure resampling and/or Monte Carlo versions of hypothesis tests. They can currently be used with scipy.stats.pearsonr.

Statistical Distributions

  • Added the von-Mises Fisher distribution as scipy.stats.vonmises_fisher. This distribution is the most common analogue of the normal distribution on the unit sphere.
  • Added the relativistic Breit-Wigner distribution as scipy.stats.rel_breitwigner. It is used in high energy physics to model resonances.
  • Added the Dirichlet multinomial distribution as scipy.stats.dirichlet_multinomial.
  • Improved the speed and precision of several univariate statistical distributions.

    • scipy.stats.anglit sf
    • scipy.stats.beta entropy
    • scipy.stats.betaprime cdf, sf, ppf
    • scipy.stats.chi entropy
    • scipy.stats.chi2 entropy
    • scipy.stats.dgamma entropy, cdf, sf, ppf, and isf
    • scipy.stats.dweibull entropy, sf, and isf
    • scipy.stats.exponweib sf and isf
    • scipy.stats.f entropy
    • scipy.stats.foldcauchy sf
    • scipy.stats.foldnorm cdf and sf
    • scipy.stats.gamma entropy
    • scipy.stats.genexpon ppf, isf, rvs
    • scipy.stats.gengamma entropy
    • scipy.stats.geom entropy
    • scipy.stats.genlogistic entropy, logcdf, sf, ppf, and isf
    • scipy.stats.genhyperbolic cdf and sf
    • scipy.stats.gibrat sf and isf
    • scipy.stats.gompertz entropy, sf. and isf
    • scipy.stats.halflogistic sf, and isf
    • scipy.stats.halfcauchy sf and isf
    • scipy.stats.halfnorm cdf, sf, and isf
    • scipy.stats.invgamma entropy
    • scipy.stats.invgauss entropy
    • scipy.stats.johnsonsb pdf, cdf, sf, ppf, and isf
    • scipy.stats.johnsonsu pdf, sf, isf, and stats
    • scipy.stats.lognorm fit
    • scipy.stats.loguniform entropy, logpdf, pdf, cdf, ppf, and stats
    • scipy.stats.maxwell sf and isf
    • scipy.stats.nakagami entropy
    • scipy.stats.powerlaw sf
    • scipy.stats.powerlognorm logpdf, logsf, sf, and isf
    • scipy.stats.powernorm sf and isf
    • scipy.stats.t entropy, logpdf, and pdf
    • scipy.stats.truncexpon sf, and isf
    • scipy.stats.truncnorm entropy
    • scipy.stats.truncpareto fit
    • scipy.stats.vonmises fit
  • scipy.stats.multivariate_t now has cdf and entropy methods.

  • scipy.stats.multivariate_normal, scipy.stats.matrix_normal, and scipy.stats.invwishart now have an entropy method.

Other Improvements

  • scipy.stats.monte_carlo_test now supports multi-sample statistics.
  • scipy.stats.bootstrap can now produce one-sided confidence intervals.
  • scipy.stats.rankdata performance was improved for method=ordinal and method=dense.
  • scipy.stats.moment now supports non-central moment calculation.
  • scipy.stats.anderson now supports the weibull_min distribution.
  • scipy.stats.sem and scipy.stats.iqr now support axis, nan_policy, and masked array input.

Deprecated features

  • Multi-Ellipsis sparse matrix indexing has been deprecated and will be removed in SciPy 1.13.
  • Several methods were deprecated for sparse arrays: asfptype, getrow, getcol, get_shape, getmaxprint, set_shape, getnnz, and getformat. Additionally, the .A and .H attributes were deprecated. Sparse matrix types are not affected.
  • The scipy.linalg functions tri, triu & tril are deprecated and will be removed in SciPy 1.13. Users are recommended to use the NumPy versions of these functions with identical names.
  • The scipy.signal functions bspline, quadratic & cubic are deprecated and will be removed in SciPy 1.13. Users are recommended to use scipy.interpolate.BSpline instead.
  • The even keyword of scipy.integrate.simpson is deprecated and will be removed in SciPy 1.13.0. Users should leave this as the default as this gives improved accuracy compared to the other methods.
  • Using exact=True when passing integers in a float array to factorial is deprecated and will be removed in SciPy 1.13.0.
  • float128 and object dtypes are deprecated for scipy.signal.medfilt and scipy.signal.order_filter
  • The functions scipy.signal.{lsim2, impulse2, step2} had long been deprecated in documentation only. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0.
  • Importing window functions directly from scipy.window has been soft deprecated since SciPy 1.1.0. They now raise a DeprecationWarning and will be removed in SciPy 1.13.0. Users should instead import them from scipy.signal.window or use the convenience function scipy.signal.get_window.

Backwards incompatible changes

  • The default for the legacy keyword of scipy.special.comb has changed from True to False, as announced since its introduction.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • The n keyword has been removed from scipy.stats.moment.
  • The alpha keyword has been removed from scipy.stats.interval.
  • The misspelt gilbrat distribution has been removed (use scipy.stats.gibrat).
  • The deprecated spelling of the kulsinski distance metric has been removed (use scipy.spatial.distance.kulczynski1).
  • The vertices keyword of scipy.spatial.Delauney.qhull has been removed (use simplices).
  • The residual property of scipy.sparse.csgraph.maximum_flow has been removed (use flow).
  • The extradoc keyword of scipy.stats.rv_continuous, scipy.stats.rv_discrete and scipy.stats.rv_sample has been removed.
  • The sym_pos keyword of scipy.linalg.solve has been removed.
  • The scipy.optimize.minimize function now raises an error for x0 with x0.ndim > 1.
  • In scipy.stats.mode, the default value of keepdims is now False, and support for non-numeric input has been removed.
  • The function scipy.signal.lsim does not support non-uniform time steps anymore.

Other changes

  • Rewrote the source build docs and restructured the contributor guide.
  • Improved support for cross-compiling with meson build system.
  • MyST-NB notebook infrastructure has been added to our documentation.

Authors

  • h-vetinari (69)
  • Oriol Abril-Pla (1) +
  • Anton Akhmerov (13)
  • Andrey Akinshin (1) +
  • alice (1) +
  • Oren Amsalem (1)
  • Ross Barnowski (11)
  • Christoph Baumgarten (2)
  • Dawson Beatty (1) +
  • Doron Behar (1) +
  • Peter Bell (1)
  • John Belmonte (1) +
  • boeleman (1) +
  • Jack Borchanian (1) +
  • Matt Borland (3) +
  • Jake Bowhay (40)
  • Sienna Brent (1) +
  • Matthew Brett (1)
  • Evgeni Burovski (38)
  • Matthias Bussonnier (2)
  • Maria Cann (1) +
  • Alfredo Carella (1) +
  • CJ Carey (18)
  • Hood Chatham (2)
  • Anirudh Dagar (3)
  • Alberto Defendi (1) +
  • Pol del Aguila (1) +
  • Hans Dembinski (1)
  • Dennis (1) +
  • Vinayak Dev (1) +
  • Thomas Duvernay (1)
  • DWesl (4)
  • Stefan Endres (66)
  • Evandro (1) +
  • Tom Eversdijk (2) +
  • Isuru Fernando (1)
  • Franz Forstmayr (4)
  • Joseph Fox-Rabinovitz (1)
  • Stefano Frazzetto (1) +
  • Neil Girdhar (1)
  • Caden Gobat (1) +
  • Ralf Gommers (146)
  • GonVas (1) +
  • Marco Gorelli (1)
  • Brett Graham (2) +
  • Matt Haberland (385)
  • harshvardhan2707 (1) +
  • Alex Herbert (1) +
  • Guillaume Horel (1)
  • Geert-Jan Huizing (1) +
  • Jakob Jakobson (2)
  • Julien Jerphanion (5)
  • jyuv (2)
  • Rajarshi Karmakar (1) +
  • Ganesh Kathiresan (3) +
  • Robert Kern (4)
  • Andrew Knyazev (3)
  • Sergey Koposov (1)
  • Rishi Kulkarni (2) +
  • Eric Larson (1)
  • Zoufiné Lauer-Bare (2) +
  • Antony Lee (3)
  • Gregory R. Lee (8)
  • Guillaume Lemaitre (1) +
  • lilinjie (2) +
  • Yannis Linardos (1) +
  • Christian Lorentzen (5)
  • Loïc Estève (1)
  • Charlie Marsh (2) +
  • Boris Martin (1) +
  • Nicholas McKibben (10)
  • Melissa Weber Mendonça (57)
  • Michał Górny (1) +
  • Jarrod Millman (2)
  • Stefanie Molin (2) +
  • Mark W. Mueller (1) +
  • mustafacevik (1) +
  • Takumasa N (1) +
  • nboudrie (1)
  • Andrew Nelson (111)
  • Nico Schlömer (4)
  • Lysandros Nikolaou (2) +
  • Kyle Oman (1)
  • OmarManzoor (2) +
  • Simon Ott (1) +
  • Geoffrey Oxberry (1) +
  • Geoffrey M. Oxberry (2) +
  • Sravya papaganti (1) +
  • Tirth Patel (2)
  • Ilhan Polat (32)
  • Quentin Barthélemy (1)
  • Matteo Raso (12) +
  • Tyler Reddy (97)
  • Lucas Roberts (1)
  • Pamphile Roy (224)
  • Jordan Rupprecht (1) +
  • Atsushi Sakai (11)
  • Omar Salman (7) +
  • Leo Sandler (1) +
  • Ujjwal Sarswat (3) +
  • Saumya (1) +
  • Daniel Schmitz (79)
  • Henry Schreiner (2) +
  • Dan Schult (3) +
  • Eli Schwartz (6)
  • Tomer Sery (2) +
  • Scott Shambaugh (4) +
  • Gagandeep Singh (1)
  • Ethan Steinberg (6) +
  • stepeos (2) +
  • Albert Steppi (3)
  • Strahinja Lukić (1)
  • Kai Striega (4)
  • suen-bit (1) +
  • Tartopohm (2)
  • Logan Thomas (2) +
  • Jacopo Tissino (1) +
  • Matus Valo (10) +
  • Jacob Vanderplas (2)
  • Christian Veenhuis (1) +
  • Isaac Virshup (1)
  • Stefan van der Walt (14)
  • Warren Weckesser (63)
  • windows-server-2003 (1)
  • Levi John Wolf (3)
  • Nobel Wong (1) +
  • Benjamin Yeh (1) +
  • Rory Yorke (1)
  • Younes (2) +
  • Zaikun ZHANG (1) +
  • Alex Zverianskii (1) +

A total of 131 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 3 years ago

scipy - SciPy 1.10.1

SciPy 1.10.1 Release Notes

SciPy 1.10.1 is a bug-fix release with no new features compared to 1.10.0.

Authors

  • Name (commits)
  • alice (1) +
  • Matt Borland (2) +
  • Evgeni Burovski (2)
  • CJ Carey (1)
  • Ralf Gommers (9)
  • Brett Graham (1) +
  • Matt Haberland (5)
  • Alex Herbert (1) +
  • Ganesh Kathiresan (2) +
  • Rishi Kulkarni (1) +
  • Loïc Estève (1)
  • Michał Górny (1) +
  • Jarrod Millman (1)
  • Andrew Nelson (4)
  • Tyler Reddy (50)
  • Pamphile Roy (2)
  • Eli Schwartz (2)
  • Tomer Sery (1) +
  • Kai Striega (1)
  • Jacopo Tissino (1) +
  • windows-server-2003 (1)

A total of 21 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.10.0

SciPy 1.10.0 Release Notes

SciPy 1.10.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.10.x branch, and on adding new features on the main branch.

This release requires Python 3.8+ and NumPy 1.19.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new dedicated datasets submodule (scipy.datasets) has been added, and is now preferred over usage of scipy.misc for dataset retrieval.
  • A new scipy.interpolate.make_smoothing_spline function was added. This function constructs a smoothing cubic spline from noisy data, using the generalized cross-validation (GCV) criterion to find the tradeoff between smoothness and proximity to data points.
  • scipy.stats has three new distributions, two new hypothesis tests, three new sample statistics, a class for greater control over calculations involving covariance matrices, and many other enhancements.

New features

scipy.datasets introduction

  • A new dedicated datasets submodule has been added. The submodules is meant for datasets that are relevant to other SciPy submodules ands content (tutorials, examples, tests), as well as contain a curated set of datasets that are of wider interest. As of this release, all the datasets from scipy.misc have been added to scipy.datasets (and deprecated in scipy.misc).
  • The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
  • Added datasets from scipy.misc: scipy.datasets.face, scipy.datasets.ascent, scipy.datasets.electrocardiogram
  • Added download and caching functionality:

    • scipy.datasets.download_all: a function to download all the scipy.datasets associated files at once.
    • scipy.datasets.clear_cache: a simple utility function to clear cached dataset files from the file system.
    • scipy/datasets/_download_all.py can be run as a standalone script for packaging purposes to avoid any external dependency at build or test time. This can be used by SciPy packagers (e.g., for Linux distros) which may have to adhere to rules that forbid downloading sources from external repositories at package build time.

scipy.integrate improvements

  • Added parameter complex_func to scipy.integrate.quad, which can be set True to integrate a complex integrand.

scipy.interpolate improvements

  • scipy.interpolate.interpn now supports tensor-product interpolation methods (slinear, cubic, quintic and pchip)
  • Tensor-product interpolation methods (slinear, cubic, quintic and pchip) in scipy.interpolate.interpn and scipy.interpolate.RegularGridInterpolator now allow values with trailing dimensions.
  • scipy.interpolate.RegularGridInterpolator has a new fast path for method="linear" with 2D data, and RegularGridInterpolator is now easier to subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline methods.
  • A new extrapolate argument is available to scipy.interpolate.BSpline.design_matrix, allowing extrapolation based on the first and last intervals.
  • A new function scipy.interpolate.make_smoothing_spline has been added. It is an implementation of the generalized cross-validation spline smoothing algorithm. The lam=None (default) mode of this function is a clean-room reimplementation of the classic gcvspl.f Fortran algorithm for constructing GCV splines.
  • A new method="pchip" mode was aded to scipy.interpolate.RegularGridInterpolator. This mode constructs an interpolator using tensor products of C1-continuous monotone splines (essentially, a scipy.interpolate.PchipInterpolator instance per dimension).

scipy.sparse.linalg improvements

  • The spectral 2-norm is now available in scipy.sparse.linalg.norm.
  • The performance of scipy.sparse.linalg.norm for the default case (Frobenius norm) has been improved.
  • LAPACK wrappers were added for trexc and trsen.
  • The scipy.sparse.linalg.lobpcg algorithm was rewritten, yielding the following improvements:

    • a simple tunable restart potentially increases the attainable accuracy for edge cases,
    • internal postprocessing runs one final exact Rayleigh-Ritz method giving more accurate and orthonormal eigenvectors,
    • output the computed iterate with the smallest max norm of the residual and drop the history of subsequent iterations,
    • remove the check for LinearOperator format input and thus allow a simple function handle of a callable object as an input,
    • better handling of common user errors with input data, rather than letting the algorithm fail.

scipy.linalg improvements

  • scipy.linalg.lu_factor now accepts rectangular arrays instead of being restricted to square arrays.

scipy.ndimage improvements

  • The new scipy.ndimage.value_indices function provides a time-efficient method to search for the locations of individual values with an array of image data.
  • A new radius argument is supported by scipy.ndimage.gaussian_filter1d and scipy.ndimage.gaussian_filter for adjusting the kernel size of the filter.

scipy.optimize improvements

  • scipy.optimize.brute now coerces non-iterable/single-value args into a tuple.
  • scipy.optimize.least_squares and scipy.optimize.curve_fit now accept scipy.optimize.Bounds for bounds constraints.
  • Added a tutorial for scipy.optimize.milp.
  • Improved the pretty-printing of scipy.optimize.OptimizeResult objects.
  • Additional options (parallel, threads, mip_rel_gap) can now be passed to scipy.optimize.linprog with method='highs'.

scipy.signal improvements

  • The new window function scipy.signal.windows.lanczos was added to compute a Lanczos window, also known as a sinc window.

scipy.sparse.csgraph improvements

  • the performance of scipy.sparse.csgraph.dijkstra has been improved, and star graphs in particular see a marked performance improvement

scipy.special improvements

  • The new function scipy.special.powm1, a ufunc with signature powm1(x, y), computes x**y - 1. The function avoids the loss of precision that can result when y is close to 0 or when x is close to 1.
  • scipy.special.erfinv is now more accurate as it leverages the Boost equivalent under the hood.

scipy.stats improvements

  • Added scipy.stats.goodness_of_fit, a generalized goodness-of-fit test for use with any univariate distribution, any combination of known and unknown parameters, and several choices of test statistic (Kolmogorov-Smirnov, Cramer-von Mises, and Anderson-Darling).
  • Improved scipy.stats.bootstrap: Default method 'BCa' now supports multi-sample statistics. Also, the bootstrap distribution is returned in the result object, and the result object can be passed into the function as parameter bootstrap_result to add additional resamples or change the confidence interval level and type.
  • Added maximum spacing estimation to scipy.stats.fit.
  • Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test.
  • Added new sample statistics.

    • Added scipy.stats.contingency.odds_ratio to compute both the conditional and unconditional odds ratios and corresponding confidence intervals for 2x2 contingency tables.
    • Added scipy.stats.directional_stats to compute sample statistics of n-dimensional directional data.
    • Added scipy.stats.expectile, which generalizes the expected value in the same way as quantiles are a generalization of the median.
  • Added new statistical distributions.

    • Added scipy.stats.uniform_direction, a multivariate distribution to sample uniformly from the surface of a hypersphere.
    • Added scipy.stats.random_table, a multivariate distribution to sample uniformly from m x n contingency tables with provided marginals.
    • Added scipy.stats.truncpareto, the truncated Pareto distribution.
  • Improved the fit method of several distributions.

    • scipy.stats.skewnorm and scipy.stats.weibull_min now use an analytical solution when method='mm', which also serves a starting guess to improve the performance of method='mle'.
    • scipy.stats.gumbel_r and scipy.stats.gumbel_l: analytical maximum likelihood estimates have been extended to the cases in which location or scale are fixed by the user.
    • Analytical maximum likelihood estimates have been added for scipy.stats.powerlaw.
  • Improved random variate sampling of several distributions.

    • Drawing multiple samples from scipy.stats.matrix_normal, scipy.stats.ortho_group, scipy.stats.special_ortho_group, and scipy.stats.unitary_group is faster.
    • The rvs method of scipy.stats.vonmises now wraps to the interval [-np.pi, np.pi].
    • Improved the reliability of scipy.stats.loggamma rvs method for small values of the shape parameter.
  • Improved the speed and/or accuracy of functions of several statistical distributions.

    • Added scipy.stats.Covariance for better speed, accuracy, and user control in multivariate normal calculations.
    • scipy.stats.skewnorm methods cdf, sf, ppf, and isf methods now use the implementations from Boost, improving speed while maintaining accuracy. The calculation of higher-order moments is also faster and more accurate.
    • scipy.stats.invgauss methods ppf and isf methods now use the implementations from Boost, improving speed and accuracy.
    • scipy.stats.invweibull methods sf and isf are more accurate for small probability masses.
    • scipy.stats.nct and scipy.stats.ncx2 now rely on the implementations from Boost, improving speed and accuracy.
    • Implemented the logpdf method of scipy.stats.vonmises for reliability in extreme tails.
    • Implemented the isf method of scipy.stats.levy for speed and accuracy.
    • Improved the robustness of scipy.stats.studentized_range for large df by adding an infinite degree-of-freedom approximation.
    • Added a parameter lower_limit to scipy.stats.multivariate_normal, allowing the user to change the integration limit from -inf to a desired value.
    • Improved the robustness of entropy of scipy.stats.vonmises for large concentration values.
  • Enhanced scipy.stats.gaussian_kde.

    • Added scipy.stats.gaussian_kde.marginal, which returns the desired marginal distribution of the original kernel density estimate distribution.
    • The cdf method of scipy.stats.gaussian_kde now accepts a lower_limit parameter for integrating the PDF over a rectangular region.
    • Moved calculations for scipy.stats.gaussian_kde.logpdf to Cython, improving speed.
    • The global interpreter lock is released by the pdf method of scipy.stats.gaussian_kde for improved multithreading performance.
    • Replaced explicit matrix inversion with Cholesky decomposition for speed and accuracy.
  • Enhanced the result objects returned by many scipy.stats functions

    • Added a confidence_interval method to the result object returned by scipy.stats.ttest_1samp and scipy.stats.ttest_rel.
    • The scipy.stats functions combine_pvalues, fisher_exact, chi2_contingency, median_test and mood now return bunch objects rather than plain tuples, allowing attributes to be accessed by name.
    • Attributes of the result objects returned by multiscale_graphcorr, anderson_ksamp, binomtest, crosstab, pointbiserialr, spearmanr, kendalltau, and weightedtau have been renamed to statistic and pvalue for consistency throughout scipy.stats. Old attribute names are still allowed for backward compatibility.
    • scipy.stats.anderson now returns the parameters of the fitted distribution in a scipy.stats._result_classes.FitResult object.
    • The plot method of scipy.stats._result_classes.FitResult now accepts a plot_type parameter; the options are 'hist' (histogram, default), 'qq' (Q-Q plot), 'pp' (P-P plot), and 'cdf' (empirical CDF plot).
    • Kolmogorov-Smirnov tests (e.g. scipy.stats.kstest) now return the location (argmax) at which the statistic is calculated and the variant of the statistic used.
  • Improved the performance of several scipy.stats functions.

    • Improved the performance of scipy.stats.cramervonmises_2samp and scipy.stats.ks_2samp with method='exact'.
    • Improved the performance of scipy.stats.siegelslopes.
    • Improved the performance of scipy.stats.mstats.hdquantile_sd.
    • Improved the performance of scipy.stats.binned_statistic_dd for several NumPy statistics, and binned statistics methods now support complex data.
  • Added the scramble optional argument to scipy.stats.qmc.LatinHypercube. It replaces centered, which is now deprecated.

  • Added a parameter optimization to all scipy.stats.qmc.QMCEngine subclasses to improve characteristics of the quasi-random variates.

  • Added tie correction to scipy.stats.mood.

  • Added tutorials for resampling methods in scipy.stats.

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized, so passing the vectorized argument explicitly is no longer required to take advantage of vectorized statistics.

  • Improved the speed of scipy.stats.permutation_test for permutation types 'samples' and 'pairings'.

  • Added axis, nan_policy, and masked array support to scipy.stats.jarque_bera.

  • Added the nan_policy optional argument to scipy.stats.rankdata.

Deprecated features

  • scipy.misc module and all the methods in misc are deprecated in v1.10 and will be completely removed in SciPy v2.0.0. Users are suggested to utilize the scipy.datasets module instead for the dataset methods.
  • scipy.stats.qmc.LatinHypercube parameter centered has been deprecated. It is replaced by the scramble argument for more consistency with other QMC engines.
  • scipy.interpolate.interp2d class has been deprecated. The docstring of the deprecated routine lists recommended replacements.

Expired Deprecations

  • There is an ongoing effort to follow through on long-standing deprecations.
  • The following previously deprecated features are affected:

    • Removed cond & rcond kwargs in linalg.pinv
    • Removed wrappers scipy.linalg.blas.{clapack, flapack}
    • Removed scipy.stats.NumericalInverseHermite and removed tol & max_intervals kwargs from scipy.stats.sampling.NumericalInverseHermite
    • Removed local_search_options kwarg frrom scipy.optimize.dual_annealing.

Other changes

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized by looking for an axis parameter in the signature of statistic. If an axis parameter is present in statistic but should not be relied on for vectorized calls, users must pass option vectorized==False explicitly.
  • scipy.stats.multivariate_normal will now raise a ValueError when the covariance matrix is not positive semidefinite, regardless of which method is called.

Authors

  • Name (commits)
  • h-vetinari (10)
  • Jelle Aalbers (1)
  • Oriol Abril-Pla (1) +
  • Alan-Hung (1) +
  • Tania Allard (7)
  • Oren Amsalem (1) +
  • Sven Baars (10)
  • Balthasar (1) +
  • Ross Barnowski (1)
  • Christoph Baumgarten (2)
  • Peter Bell (2)
  • Sebastian Berg (1)
  • Aaron Berk (1) +
  • boatwrong (1) +
  • boeleman (1) +
  • Jake Bowhay (50)
  • Matthew Brett (4)
  • Evgeni Burovski (93)
  • Matthias Bussonnier (6)
  • Dominic C (2)
  • Mingbo Cai (1) +
  • James Campbell (2) +
  • CJ Carey (4)
  • cesaregarza (1) +
  • charlie0389 (1) +
  • Hood Chatham (5)
  • Andrew Chin (1) +
  • Daniel Ching (1) +
  • Leo Chow (1) +
  • chris (3) +
  • John Clow (1) +
  • cm7S (1) +
  • cmgodwin (1) +
  • Christopher Cowden (2) +
  • Henry Cuzco (2) +
  • Anirudh Dagar (12)
  • Hans Dembinski (2) +
  • Jaiden di Lanzo (24) +
  • Felipe Dias (1) +
  • Dieter Werthmüller (1)
  • Giuseppe Dilillo (1) +
  • dpoerio (1) +
  • drpeteb (1) +
  • Christopher Dupuis (1) +
  • Jordan Edmunds (1) +
  • Pieter Eendebak (1) +
  • Jérome Eertmans (1) +
  • Fabian Egli (2) +
  • Sebastian Ehlert (2) +
  • Kian Eliasi (1) +
  • Tomohiro Endo (1) +
  • Stefan Endres (1)
  • Zeb Engberg (4) +
  • Jonas Eschle (1) +
  • Thomas J. Fan (9)
  • fiveseven (1) +
  • Neil Flood (1) +
  • Franz Forstmayr (1)
  • Sara Fridovich-Keil (1)
  • David Gilbertson (1) +
  • Ralf Gommers (251)
  • Marco Gorelli (2) +
  • Matt Haberland (387)
  • Andrew Hawryluk (2) +
  • Christoph Hohnerlein (2) +
  • Loïc Houpert (2) +
  • Shamus Husheer (1) +
  • ideasrule (1) +
  • imoiwm (1) +
  • Lakshaya Inani (1) +
  • Joseph T. Iosue (1)
  • iwbc-mzk (1) +
  • Nathan Jacobi (3) +
  • Julien Jerphanion (5)
  • He Jia (1)
  • jmkuebler (1) +
  • Johannes Müller (1) +
  • Vedant Jolly (1) +
  • Juan Luis Cano Rodríguez (2)
  • Justin (1) +
  • jvavrek (1) +
  • jyuv (2)
  • Kai Mühlbauer (1) +
  • Nikita Karetnikov (3) +
  • Reinert Huseby Karlsen (1) +
  • kaspar (2) +
  • Toshiki Kataoka (1)
  • Robert Kern (3)
  • Joshua Klein (1) +
  • Andrew Knyazev (7)
  • Jozsef Kutas (16) +
  • Eric Larson (4)
  • Lechnio (1) +
  • Antony Lee (2)
  • Aditya Limaye (1) +
  • Xingyu Liu (2)
  • Christian Lorentzen (4)
  • Loïc Estève (2)
  • Thibaut Lunet (2) +
  • Peter Lysakovski (1)
  • marianasalamoni (2) +
  • mariprudencio (1) +
  • Paige Martin (1) +
  • Arno Marty (1) +
  • matthewborish (3) +
  • Damon McDougall (1)
  • Nicholas McKibben (22)
  • McLP (1) +
  • mdmahendri (1) +
  • Melissa Weber Mendonça (9)
  • Jarrod Millman (1)
  • Naoto Mizuno (2)
  • Shashaank N (1)
  • Pablo S Naharro (1) +
  • nboudrie (2) +
  • Andrew Nelson (52)
  • Nico Schlömer (1)
  • NiMlr (1) +
  • o-alexandre-felipe (1) +
  • Maureen Ononiwu (1) +
  • Dimitri Papadopoulos (2) +
  • partev (1) +
  • Tirth Patel (10)
  • Paulius Šarka (1) +
  • Josef Perktold (1)
  • Giacomo Petrillo (3) +
  • Matti Picus (1)
  • Rafael Pinto (1) +
  • PKNaveen (1) +
  • Ilhan Polat (6)
  • Akshita Prasanth (2) +
  • Sean Quinn (1)
  • Tyler Reddy (155)
  • Martin Reinecke (1)
  • Ned Richards (1)
  • Marie Roald (1) +
  • Sam Rosen (4) +
  • Pamphile Roy (105)
  • sabonerune (2) +
  • Atsushi Sakai (94)
  • Daniel Schmitz (27)
  • Anna Scholtz (1) +
  • Eli Schwartz (11)
  • serge-sans-paille (2)
  • JEEVANSHI SHARMA (1) +
  • ehsan shirvanian (2) +
  • siddhantwahal (2)
  • Mathieu Dutour Sikiric (1) +
  • Sourav Singh (1)
  • Alexander Soare (1) +
  • Bjørge Solli (2) +
  • Scott Staniewicz (1)
  • Ethan Steinberg (3) +
  • Albert Steppi (3)
  • Thomas Stoeger (1) +
  • Kai Striega (4)
  • Tartopohm (1) +
  • Mamoru TASAKA (2) +
  • Ewout ter Hoeven (5)
  • TianyiQ (1) +
  • Tiger (1) +
  • Will Tirone (1)
  • Ajay Shanker Tripathi (1) +
  • Edgar Andrés Margffoy Tuay (1) +
  • Dmitry Ulyumdzhiev (1) +
  • Hari Vamsi (1) +
  • VitalyChait (1) +
  • Rik Voorhaar (1) +
  • Samuel Wallan (4)
  • Stefan van der Walt (2)
  • Warren Weckesser (145)
  • wei2222 (1) +
  • windows-server-2003 (3) +
  • Marek Wojciechowski (2) +
  • Niels Wouda (1) +
  • WRKampi (1) +
  • Yeonjoo Yoo (1) +
  • Rory Yorke (1)
  • Xiao Yuan (2) +
  • Meekail Zain (2) +
  • Fabio Zanini (1) +
  • Steffen Zeile (1) +
  • Egor Zemlyanoy (19)
  • Gavin Zhang (3) +

A total of 184 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.10.0rc2

SciPy 1.10.0 Release Notes

Note: SciPy 1.10.0 is not released yet!

SciPy 1.10.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.10.x branch, and on adding new features on the main branch.

This release requires Python 3.8+ and NumPy 1.19.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new dedicated datasets submodule (scipy.datasets) has been added, and is now preferred over usage of scipy.misc for dataset retrieval.
  • A new scipy.interpolate.make_smoothing_spline function was added. This function constructs a smoothing cubic spline from noisy data, using the generalized cross-validation (GCV) criterion to find the tradeoff between smoothness and proximity to data points.
  • scipy.stats has three new distributions, two new hypothesis tests, three new sample statistics, a class for greater control over calculations involving covariance matrices, and many other enhancements.

New features

scipy.datasets introduction

  • A new dedicated datasets submodule has been added. The submodules is meant for datasets that are relevant to other SciPy submodules ands content (tutorials, examples, tests), as well as contain a curated set of datasets that are of wider interest. As of this release, all the datasets from scipy.misc have been added to scipy.datasets (and deprecated in scipy.misc).
  • The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
  • Added datasets from scipy.misc: scipy.datasets.face, scipy.datasets.ascent, scipy.datasets.electrocardiogram
  • Added download and caching functionality:

    • scipy.datasets.download_all: a function to download all the scipy.datasets associated files at once.
    • scipy.datasets.clear_cache: a simple utility function to clear cached dataset files from the file system.
    • scipy/datasets/_download_all.py can be run as a standalone script for packaging purposes to avoid any external dependency at build or test time. This can be used by SciPy packagers (e.g., for Linux distros) which may have to adhere to rules that forbid downloading sources from external repositories at package build time.

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad, which performs quadrature using Quasi-Monte Carlo points.
  • Added parameter complex_func to scipy.integrate.quad, which can be set True to integrate a complex integrand.

scipy.interpolate improvements

  • scipy.interpolate.interpn now supports tensor-product interpolation methods (slinear, cubic, quintic and pchip)
  • Tensor-product interpolation methods (slinear, cubic, quintic and pchip) in scipy.interpolate.interpn and scipy.interpolate.RegularGridInterpolator now allow values with trailing dimensions.
  • scipy.interpolate.RegularGridInterpolator has a new fast path for method="linear" with 2D data, and RegularGridInterpolator is now easier to subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline methods.
  • A new extrapolate argument is available to scipy.interpolate.BSpline.design_matrix, allowing extrapolation based on the first and last intervals.
  • A new function scipy.interpolate.make_smoothing_spline has been added. It is an implementation of the generalized cross-validation spline smoothing algorithm. The lam=None (default) mode of this function is a clean-room reimplementation of the classic gcvspl.f Fortran algorithm for constructing GCV splines.
  • A new method="pchip" mode was aded to scipy.interpolate.RegularGridInterpolator. This mode constructs an interpolator using tensor products of C1-continuous monotone splines (essentially, a scipy.interpolate.PchipInterpolator instance per dimension).

scipy.sparse.linalg improvements

  • The spectral 2-norm is now available in scipy.sparse.linalg.norm.
  • The performance of scipy.sparse.linalg.norm for the default case (Frobenius norm) has been improved.
  • LAPACK wrappers were added for trexc and trsen.
  • The scipy.sparse.linalg.lobpcg algorithm was rewritten, yielding the following improvements:

    • a simple tunable restart potentially increases the attainable accuracy for edge cases,
    • internal postprocessing runs one final exact Rayleigh-Ritz method giving more accurate and orthonormal eigenvectors,
    • output the computed iterate with the smallest max norm of the residual and drop the history of subsequent iterations,
    • remove the check for LinearOperator format input and thus allow a simple function handle of a callable object as an input,
    • better handling of common user errors with input data, rather than letting the algorithm fail.

scipy.linalg improvements

  • scipy.linalg.lu_factor now accepts rectangular arrays instead of being restricted to square arrays.

scipy.ndimage improvements

  • The new scipy.ndimage.value_indices function provides a time-efficient method to search for the locations of individual values with an array of image data.
  • A new radius argument is supported by scipy.ndimage.gaussian_filter1d and scipy.ndimage.gaussian_filter for adjusting the kernel size of the filter.

scipy.optimize improvements

  • scipy.optimize.brute now coerces non-iterable/single-value args into a tuple.
  • scipy.optimize.least_squares and scipy.optimize.curve_fit now accept scipy.optimize.Bounds for bounds constraints.
  • Added a tutorial for scipy.optimize.milp.
  • Improved the pretty-printing of scipy.optimize.OptimizeResult objects.
  • Additional options (parallel, threads, mip_rel_gap) can now be passed to scipy.optimize.linprog with method='highs'.

scipy.signal improvements

  • The new window function scipy.signal.windows.lanczos was added to compute a Lanczos window, also known as a sinc window.

scipy.sparse.csgraph improvements

  • the performance of scipy.sparse.csgraph.dijkstra has been improved, and star graphs in particular see a marked performance improvement

scipy.special improvements

  • The new function scipy.special.powm1, a ufunc with signature powm1(x, y), computes x**y - 1. The function avoids the loss of precision that can result when y is close to 0 or when x is close to 1.
  • scipy.special.erfinv is now more accurate as it leverages the Boost equivalent under the hood.

scipy.stats improvements

  • Added scipy.stats.goodness_of_fit, a generalized goodness-of-fit test for use with any univariate distribution, any combination of known and unknown parameters, and several choices of test statistic (Kolmogorov-Smirnov, Cramer-von Mises, and Anderson-Darling).
  • Improved scipy.stats.bootstrap: Default method 'BCa' now supports multi-sample statistics. Also, the bootstrap distribution is returned in the result object, and the result object can be passed into the function as parameter bootstrap_result to add additional resamples or change the confidence interval level and type.
  • Added maximum spacing estimation to scipy.stats.fit.
  • Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test.
  • Added new sample statistics.

    • Added scipy.stats.contingency.odds_ratio to compute both the conditional and unconditional odds ratios and corresponding confidence intervals for 2x2 contingency tables.
    • Added scipy.stats.directional_stats to compute sample statistics of n-dimensional directional data.
    • Added scipy.stats.expectile, which generalizes the expected value in the same way as quantiles are a generalization of the median.
  • Added new statistical distributions.

    • Added scipy.stats.uniform_direction, a multivariate distribution to sample uniformly from the surface of a hypersphere.
    • Added scipy.stats.random_table, a multivariate distribution to sample uniformly from m x n contingency tables with provided marginals.
    • Added scipy.stats.truncpareto, the truncated Pareto distribution.
  • Improved the fit method of several distributions.

    • scipy.stats.skewnorm and scipy.stats.weibull_min now use an analytical solution when method='mm', which also serves a starting guess to improve the performance of method='mle'.
    • scipy.stats.gumbel_r and scipy.stats.gumbel_l: analytical maximum likelihood estimates have been extended to the cases in which location or scale are fixed by the user.
    • Analytical maximum likelihood estimates have been added for scipy.stats.powerlaw.
  • Improved random variate sampling of several distributions.

    • Drawing multiple samples from scipy.stats.matrix_normal, scipy.stats.ortho_group, scipy.stats.special_ortho_group, and scipy.stats.unitary_group is faster.
    • The rvs method of scipy.stats.vonmises now wraps to the interval [-np.pi, np.pi].
    • Improved the reliability of scipy.stats.loggamma rvs method for small values of the shape parameter.
  • Improved the speed and/or accuracy of functions of several statistical distributions.

    • Added scipy.stats.Covariance for better speed, accuracy, and user control in multivariate normal calculations.
    • scipy.stats.skewnorm methods cdf, sf, ppf, and isf methods now use the implementations from Boost, improving speed while maintaining accuracy. The calculation of higher-order moments is also faster and more accurate.
    • scipy.stats.invgauss methods ppf and isf methods now use the implementations from Boost, improving speed and accuracy.
    • scipy.stats.invweibull methods sf and isf are more accurate for small probability masses.
    • scipy.stats.nct and scipy.stats.ncx2 now rely on the implementations from Boost, improving speed and accuracy.
    • Implemented the logpdf method of scipy.stats.vonmises for reliability in extreme tails.
    • Implemented the isf method of scipy.stats.levy for speed and accuracy.
    • Improved the robustness of scipy.stats.studentized_range for large df by adding an infinite degree-of-freedom approximation.
    • Added a parameter lower_limit to scipy.stats.multivariate_normal, allowing the user to change the integration limit from -inf to a desired value.
    • Improved the robustness of entropy of scipy.stats.vonmises for large concentration values.
  • Enhanced scipy.stats.gaussian_kde.

    • Added scipy.stats.gaussian_kde.marginal, which returns the desired marginal distribution of the original kernel density estimate distribution.
    • The cdf method of scipy.stats.gaussian_kde now accepts a lower_limit parameter for integrating the PDF over a rectangular region.
    • Moved calculations for scipy.stats.gaussian_kde.logpdf to Cython, improving speed.
    • The global interpreter lock is released by the pdf method of scipy.stats.gaussian_kde for improved multithreading performance.
    • Replaced explicit matrix inversion with Cholesky decomposition for speed and accuracy.
  • Enhanced the result objects returned by many scipy.stats functions

    • Added a confidence_interval method to the result object returned by scipy.stats.ttest_1samp and scipy.stats.ttest_rel.
    • The scipy.stats functions combine_pvalues, fisher_exact, chi2_contingency, median_test and mood now return bunch objects rather than plain tuples, allowing attributes to be accessed by name.
    • Attributes of the result objects returned by multiscale_graphcorr, anderson_ksamp, binomtest, crosstab, pointbiserialr, spearmanr, kendalltau, and weightedtau have been renamed to statistic and pvalue for consistency throughout scipy.stats. Old attribute names are still allowed for backward compatibility.
    • scipy.stats.anderson now returns the parameters of the fitted distribution in a scipy.stats._result_classes.FitResult object.
    • The plot method of scipy.stats._result_classes.FitResult now accepts a plot_type parameter; the options are 'hist' (histogram, default), 'qq' (Q-Q plot), 'pp' (P-P plot), and 'cdf' (empirical CDF plot).
    • Kolmogorov-Smirnov tests (e.g. scipy.stats.kstest) now return the location (argmax) at which the statistic is calculated and the variant of the statistic used.
  • Improved the performance of several scipy.stats functions.

    • Improved the performance of scipy.stats.cramervonmises_2samp and scipy.stats.ks_2samp with method='exact'.
    • Improved the performance of scipy.stats.siegelslopes.
    • Improved the performance of scipy.stats.mstats.hdquantile_sd.
    • Improved the performance of scipy.stats.binned_statistic_dd for several NumPy statistics, and binned statistics methods now support complex data.
  • Added the scramble optional argument to scipy.stats.qmc.LatinHypercube. It replaces centered, which is now deprecated.

  • Added a parameter optimization to all scipy.stats.qmc.QMCEngine subclasses to improve characteristics of the quasi-random variates.

  • Added tie correction to scipy.stats.mood.

  • Added tutorials for resampling methods in scipy.stats.

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized, so passing the vectorized argument explicitly is no longer required to take advantage of vectorized statistics.

  • Improved the speed of scipy.stats.permutation_test for permutation types 'samples' and 'pairings'.

  • Added axis, nan_policy, and masked array support to scipy.stats.jarque_bera.

  • Added the nan_policy optional argument to scipy.stats.rankdata.

Deprecated features

  • scipy.misc module and all the methods in misc are deprecated in v1.10 and will be completely removed in SciPy v2.0.0. Users are suggested to utilize the scipy.datasets module instead for the dataset methods.
  • scipy.stats.qmc.LatinHypercube parameter centered has been deprecated. It is replaced by the scramble argument for more consistency with other QMC engines.
  • scipy.interpolate.interp2d class has been deprecated. The docstring of the deprecated routine lists recommended replacements.

Expired Deprecations

  • There is an ongoing effort to follow through on long-standing deprecations.
  • The following previously deprecated features are affected:

    • Removed cond & rcond kwargs in linalg.pinv
    • Removed wrappers scipy.linalg.blas.{clapack, flapack}
    • Removed scipy.stats.NumericalInverseHermite and removed tol & max_intervals kwargs from scipy.stats.sampling.NumericalInverseHermite
    • Removed local_search_options kwarg frrom scipy.optimize.dual_annealing.

Other changes

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized by looking for an axis parameter in the signature of statistic. If an axis parameter is present in statistic but should not be relied on for vectorized calls, users must pass option vectorized==False explicitly.
  • scipy.stats.multivariate_normal will now raise a ValueError when the covariance matrix is not positive semidefinite, regardless of which method is called.

Authors

  • Name (commits)
  • h-vetinari (10)
  • Jelle Aalbers (1)
  • Oriol Abril-Pla (1) +
  • Alan-Hung (1) +
  • Tania Allard (7)
  • Oren Amsalem (1) +
  • Sven Baars (10)
  • Balthasar (1) +
  • Ross Barnowski (1)
  • Christoph Baumgarten (2)
  • Peter Bell (2)
  • Sebastian Berg (1)
  • Aaron Berk (1) +
  • boatwrong (1) +
  • boeleman (1) +
  • Jake Bowhay (50)
  • Matthew Brett (4)
  • Evgeni Burovski (93)
  • Matthias Bussonnier (6)
  • Dominic C (2)
  • Mingbo Cai (1) +
  • James Campbell (2) +
  • CJ Carey (4)
  • cesaregarza (1) +
  • charlie0389 (1) +
  • Hood Chatham (5)
  • Andrew Chin (1) +
  • Daniel Ching (1) +
  • Leo Chow (1) +
  • chris (3) +
  • John Clow (1) +
  • cm7S (1) +
  • cmgodwin (1) +
  • Christopher Cowden (2) +
  • Henry Cuzco (2) +
  • Anirudh Dagar (12)
  • Hans Dembinski (2) +
  • Jaiden di Lanzo (24) +
  • Felipe Dias (1) +
  • Dieter Werthmüller (1)
  • Giuseppe Dilillo (1) +
  • dpoerio (1) +
  • drpeteb (1) +
  • Christopher Dupuis (1) +
  • Jordan Edmunds (1) +
  • Pieter Eendebak (1) +
  • Jérome Eertmans (1) +
  • Fabian Egli (2) +
  • Sebastian Ehlert (2) +
  • Kian Eliasi (1) +
  • Tomohiro Endo (1) +
  • Stefan Endres (1)
  • Zeb Engberg (4) +
  • Jonas Eschle (1) +
  • Thomas J. Fan (9)
  • fiveseven (1) +
  • Neil Flood (1) +
  • Franz Forstmayr (1)
  • Sara Fridovich-Keil (1)
  • David Gilbertson (1) +
  • Ralf Gommers (251)
  • Marco Gorelli (2) +
  • Matt Haberland (383)
  • Andrew Hawryluk (2) +
  • Christoph Hohnerlein (2) +
  • Loïc Houpert (2) +
  • Shamus Husheer (1) +
  • ideasrule (1) +
  • imoiwm (1) +
  • Lakshaya Inani (1) +
  • Joseph T. Iosue (1)
  • iwbc-mzk (1) +
  • Nathan Jacobi (3) +
  • Julien Jerphanion (5)
  • He Jia (1)
  • jmkuebler (1) +
  • Johannes Müller (1) +
  • Vedant Jolly (1) +
  • Juan Luis Cano Rodríguez (2)
  • Justin (1) +
  • jvavrek (1) +
  • jyuv (2)
  • Kai Mühlbauer (1) +
  • Nikita Karetnikov (3) +
  • Reinert Huseby Karlsen (1) +
  • kaspar (2) +
  • Toshiki Kataoka (1)
  • Robert Kern (3)
  • Joshua Klein (1) +
  • Andrew Knyazev (7)
  • Jozsef Kutas (16) +
  • Eric Larson (4)
  • Lechnio (1) +
  • Antony Lee (2)
  • Aditya Limaye (1) +
  • Xingyu Liu (2)
  • Christian Lorentzen (4)
  • Loïc Estève (2)
  • Thibaut Lunet (2) +
  • Peter Lysakovski (1)
  • marianasalamoni (2) +
  • mariprudencio (1) +
  • Paige Martin (1) +
  • Arno Marty (1) +
  • matthewborish (3) +
  • Damon McDougall (1)
  • Nicholas McKibben (22)
  • McLP (1) +
  • mdmahendri (1) +
  • Melissa Weber Mendonça (9)
  • Jarrod Millman (1)
  • Naoto Mizuno (2)
  • Shashaank N (1)
  • Pablo S Naharro (1) +
  • nboudrie (2) +
  • Andrew Nelson (52)
  • Nico Schlömer (1)
  • NiMlr (1) +
  • o-alexandre-felipe (1) +
  • Maureen Ononiwu (1) +
  • Dimitri Papadopoulos (2) +
  • partev (1) +
  • Tirth Patel (10)
  • Paulius Šarka (1) +
  • Josef Perktold (1)
  • Giacomo Petrillo (3) +
  • Matti Picus (1)
  • Rafael Pinto (1) +
  • PKNaveen (1) +
  • Ilhan Polat (6)
  • Akshita Prasanth (2) +
  • Sean Quinn (1)
  • Tyler Reddy (142)
  • Martin Reinecke (1)
  • Ned Richards (1)
  • Marie Roald (1) +
  • Sam Rosen (4) +
  • Pamphile Roy (105)
  • sabonerune (2) +
  • Atsushi Sakai (94)
  • Daniel Schmitz (27)
  • Anna Scholtz (1) +
  • Eli Schwartz (11)
  • serge-sans-paille (2)
  • JEEVANSHI SHARMA (1) +
  • ehsan shirvanian (2) +
  • siddhantwahal (2)
  • Mathieu Dutour Sikiric (1) +
  • Sourav Singh (1)
  • Alexander Soare (1) +
  • Bjørge Solli (2) +
  • Scott Staniewicz (1)
  • Albert Steppi (3)
  • Thomas Stoeger (1) +
  • Kai Striega (4)
  • Tartopohm (1) +
  • Mamoru TASAKA (2) +
  • Ewout ter Hoeven (5)
  • TianyiQ (1) +
  • Tiger (1) +
  • Will Tirone (1)
  • Edgar Andrés Margffoy Tuay (1) +
  • Dmitry Ulyumdzhiev (1) +
  • Hari Vamsi (1) +
  • VitalyChait (1) +
  • Rik Voorhaar (1) +
  • Samuel Wallan (4)
  • Stefan van der Walt (2)
  • Warren Weckesser (145)
  • wei2222 (1) +
  • windows-server-2003 (3) +
  • Marek Wojciechowski (2) +
  • Niels Wouda (1) +
  • WRKampi (1) +
  • Yeonjoo Yoo (1) +
  • Rory Yorke (1)
  • Xiao Yuan (2) +
  • Meekail Zain (2) +
  • Fabio Zanini (1) +
  • Steffen Zeile (1) +
  • Egor Zemlyanoy (19)
  • Gavin Zhang (3) +

A total of 182 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.10.0rc1

SciPy 1.10.0 Release Notes

Note: SciPy 1.10.0 is not released yet!

SciPy 1.10.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.10.x branch, and on adding new features on the main branch.

This release requires Python 3.8+ and NumPy 1.19.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new dedicated datasets submodule (scipy.datasets) has been added, and is now preferred over usage of scipy.misc for dataset retrieval.
  • A new scipy.interpolate.make_smoothing_spline function was added. This function constructs a smoothing cubic spline from noisy data, using the generalized cross-validation (GCV) criterion to find the tradeoff between smoothness and proximity to data points.
  • scipy.stats has three new distributions, two new hypothesis tests, three new sample statistics, a class for greater control over calculations involving covariance matrices, and many other enhancements.

New features

scipy.datasets introduction

  • A new dedicated datasets submodule has been added. The submodules is meant for datasets that are relevant to other SciPy submodules ands content (tutorials, examples, tests), as well as contain a curated set of datasets that are of wider interest. As of this release, all the datasets from scipy.misc have been added to scipy.datasets (and deprecated in scipy.misc).
  • The submodule is based on Pooch (a new optional dependency for SciPy), a Python package to simplify fetching data files. This move will, in a subsequent release, facilitate SciPy to trim down the sdist/wheel sizes, by decoupling the data files and moving them out of the SciPy repository, hosting them externally and downloading them when requested. After downloading the datasets once, the files are cached to avoid network dependence and repeated usage.
  • Added datasets from scipy.misc: scipy.datasets.face, scipy.datasets.ascent, scipy.datasets.electrocardiogram
  • Added download and caching functionality:

    • scipy.datasets.download_all: a function to download all the scipy.datasets associated files at once.
    • scipy.datasets.clear_cache: a simple utility function to clear cached dataset files from the file system.
    • scipy/datasets/_download_all.py can be run as a standalone script for packaging purposes to avoid any external dependency at build or test time. This can be used by SciPy packagers (e.g., for Linux distros) which may have to adhere to rules that forbid downloading sources from external repositories at package build time.

scipy.integrate improvements

  • Added scipy.integrate.qmc_quad, which performs quadrature using Quasi-Monte Carlo points.
  • Added parameter complex_func to scipy.integrate.quad, which can be set True to integrate a complex integrand.

scipy.interpolate improvements

  • scipy.interpolate.interpn now supports tensor-product interpolation methods (slinear, cubic, quintic and pchip)
  • Tensor-product interpolation methods (slinear, cubic, quintic and pchip) in scipy.interpolate.interpn and scipy.interpolate.RegularGridInterpolator now allow values with trailing dimensions.
  • scipy.interpolate.RegularGridInterpolator has a new fast path for method="linear" with 2D data, and RegularGridInterpolator is now easier to subclass
  • scipy.interpolate.interp1d now can take a single value for non-spline methods.
  • A new extrapolate argument is available to scipy.interpolate.BSpline.design_matrix, allowing extrapolation based on the first and last intervals.
  • A new function scipy.interpolate.make_smoothing_spline has been added. It is an implementation of the generalized cross-validation spline smoothing algorithm. The lam=None (default) mode of this function is a clean-room reimplementation of the classic gcvspl.f Fortran algorithm for constructing GCV splines.
  • A new method="pchip" mode was aded to scipy.interpolate.RegularGridInterpolator. This mode constructs an interpolator using tensor products of C1-continuous monotone splines (essentially, a scipy.interpolate.PchipInterpolator instance per dimension).

scipy.sparse.linalg improvements

  • The spectral 2-norm is now available in scipy.sparse.linalg.norm.
  • The performance of scipy.sparse.linalg.norm for the default case (Frobenius norm) has been improved.
  • LAPACK wrappers were added for trexc and trsen.
  • The scipy.sparse.linalg.lobpcg algorithm was rewritten, yielding the following improvements:

    • a simple tunable restart potentially increases the attainable accuracy for edge cases,
    • internal postprocessing runs one final exact Rayleigh-Ritz method giving more accurate and orthonormal eigenvectors,
    • output the computed iterate with the smallest max norm of the residual and drop the history of subsequent iterations,
    • remove the check for LinearOperator format input and thus allow a simple function handle of a callable object as an input,
    • better handling of common user errors with input data, rather than letting the algorithm fail.

scipy.linalg improvements

  • scipy.linalg.lu_factor now accepts rectangular arrays instead of being restricted to square arrays.

scipy.ndimage improvements

  • The new scipy.ndimage.value_indices function provides a time-efficient method to search for the locations of individual values with an array of image data.
  • A new radius argument is supported by scipy.ndimage.gaussian_filter1d and scipy.ndimage.gaussian_filter for adjusting the kernel size of the filter.

scipy.optimize improvements

  • scipy.optimize.brute now coerces non-iterable/single-value args into a tuple.
  • scipy.optimize.least_squares and scipy.optimize.curve_fit now accept scipy.optimize.Bounds for bounds constraints.
  • Added a tutorial for scipy.optimize.milp.
  • Improved the pretty-printing of scipy.optimize.OptimizeResult objects.
  • Additional options (parallel, threads, mip_rel_gap) can now be passed to scipy.optimize.linprog with method='highs'.

scipy.signal improvements

  • The new window function scipy.signal.windows.lanczos was added to compute a Lanczos window, also known as a sinc window.

scipy.sparse.csgraph improvements

  • the performance of scipy.sparse.csgraph.dijkstra has been improved, and star graphs in particular see a marked performance improvement

scipy.special improvements

  • The new function scipy.special.powm1, a ufunc with signature powm1(x, y), computes x**y - 1. The function avoids the loss of precision that can result when y is close to 0 or when x is close to 1.
  • scipy.special.erfinv is now more accurate as it leverages the Boost equivalent under the hood.

scipy.stats improvements

  • Added scipy.stats.goodness_of_fit, a generalized goodness-of-fit test for use with any univariate distribution, any combination of known and unknown parameters, and several choices of test statistic (Kolmogorov-Smirnov, Cramer-von Mises, and Anderson-Darling).
  • Improved scipy.stats.bootstrap: Default method 'BCa' now supports multi-sample statistics. Also, the bootstrap distribution is returned in the result object, and the result object can be passed into the function as parameter bootstrap_result to add additional resamples or change the confidence interval level and type.
  • Added maximum spacing estimation to scipy.stats.fit.
  • Added the Poisson means test ("E-test") as scipy.stats.poisson_means_test.
  • Added new sample statistics.

    • Added scipy.stats.contingency.odds_ratio to compute both the conditional and unconditional odds ratios and corresponding confidence intervals for 2x2 contingency tables.
    • Added scipy.stats.directional_stats to compute sample statistics of n-dimensional directional data.
    • Added scipy.stats.expectile, which generalizes the expected value in the same way as quantiles are a generalization of the median.
  • Added new statistical distributions.

    • Added scipy.stats.uniform_direction, a multivariate distribution to sample uniformly from the surface of a hypersphere.
    • Added scipy.stats.random_table, a multivariate distribution to sample uniformly from m x n contingency tables with provided marginals.
    • Added scipy.stats.truncpareto, the truncated Pareto distribution.
  • Improved the fit method of several distributions.

    • scipy.stats.skewnorm and scipy.stats.weibull_min now use an analytical solution when method='mm', which also serves a starting guess to improve the performance of method='mle'.
    • scipy.stats.gumbel_r and scipy.stats.gumbel_l: analytical maximum likelihood estimates have been extended to the cases in which location or scale are fixed by the user.
    • Analytical maximum likelihood estimates have been added for scipy.stats.powerlaw.
  • Improved random variate sampling of several distributions.

    • Drawing multiple samples from scipy.stats.matrix_normal, scipy.stats.ortho_group, scipy.stats.special_ortho_group, and scipy.stats.unitary_group is faster.
    • The rvs method of scipy.stats.vonmises now wraps to the interval [-np.pi, np.pi].
    • Improved the reliability of scipy.stats.loggamma rvs method for small values of the shape parameter.
  • Improved the speed and/or accuracy of functions of several statistical distributions.

    • Added scipy.stats.Covariance for better speed, accuracy, and user control in multivariate normal calculations.
    • scipy.stats.skewnorm methods cdf, sf, ppf, and isf methods now use the implementations from Boost, improving speed while maintaining accuracy. The calculation of higher-order moments is also faster and more accurate.
    • scipy.stats.invgauss methods ppf and isf methods now use the implementations from Boost, improving speed and accuracy.
    • scipy.stats.invweibull methods sf and isf are more accurate for small probability masses.
    • scipy.stats.nct and scipy.stats.ncx2 now rely on the implementations from Boost, improving speed and accuracy.
    • Implemented the logpdf method of scipy.stats.vonmises for reliability in extreme tails.
    • Implemented the isf method of scipy.stats.levy for speed and accuracy.
    • Improved the robustness of scipy.stats.studentized_range for large df by adding an infinite degree-of-freedom approximation.
    • Added a parameter lower_limit to scipy.stats.multivariate_normal, allowing the user to change the integration limit from -inf to a desired value.
    • Improved the robustness of entropy of scipy.stats.vonmises for large concentration values.
  • Enhanced scipy.stats.gaussian_kde.

    • Added scipy.stats.gaussian_kde.marginal, which returns the desired marginal distribution of the original kernel density estimate distribution.
    • The cdf method of scipy.stats.gaussian_kde now accepts a lower_limit parameter for integrating the PDF over a rectangular region.
    • Moved calculations for scipy.stats.gaussian_kde.logpdf to Cython, improving speed.
    • The global interpreter lock is released by the pdf method of scipy.stats.gaussian_kde for improved multithreading performance.
    • Replaced explicit matrix inversion with Cholesky decomposition for speed and accuracy.
  • Enhanced the result objects returned by many scipy.stats functions

    • Added a confidence_interval method to the result object returned by scipy.stats.ttest_1samp and scipy.stats.ttest_rel.
    • The scipy.stats functions combine_pvalues, fisher_exact, chi2_contingency, median_test and mood now return bunch objects rather than plain tuples, allowing attributes to be accessed by name.
    • Attributes of the result objects returned by multiscale_graphcorr, anderson_ksamp, binomtest, crosstab, pointbiserialr, spearmanr, kendalltau, and weightedtau have been renamed to statistic and pvalue for consistency throughout scipy.stats. Old attribute names are still allowed for backward compatibility.
    • scipy.stats.anderson now returns the parameters of the fitted distribution in a scipy.stats._result_classes.FitResult object.
    • The plot method of scipy.stats._result_classes.FitResult now accepts a plot_type parameter; the options are 'hist' (histogram, default), 'qq' (Q-Q plot), 'pp' (P-P plot), and 'cdf' (empirical CDF plot).
    • Kolmogorov-Smirnov tests (e.g. scipy.stats.kstest) now return the location (argmax) at which the statistic is calculated and the variant of the statistic used.
  • Improved the performance of several scipy.stats functions.

    • Improved the performance of scipy.stats.cramervonmises_2samp and scipy.stats.ks_2samp with method='exact'.
    • Improved the performance of scipy.stats.siegelslopes.
    • Improved the performance of scipy.stats.mstats.hdquantile_sd.
    • Improved the performance of scipy.stats.binned_statistic_dd for several NumPy statistics, and binned statistics methods now support complex data.
  • Added the scramble optional argument to scipy.stats.qmc.LatinHypercube. It replaces centered, which is now deprecated.

  • Added a parameter optimization to all scipy.stats.qmc.QMCEngine subclasses to improve characteristics of the quasi-random variates.

  • Added tie correction to scipy.stats.mood.

  • Added tutorials for resampling methods in scipy.stats.

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized, so passing the vectorized argument explicitly is no longer required to take advantage of vectorized statistics.

  • Improved the speed of scipy.stats.permutation_test for permutation types 'samples' and 'pairings'.

  • Added axis, nan_policy, and masked array support to scipy.stats.jarque_bera.

  • Added the nan_policy optional argument to scipy.stats.rankdata.

Deprecated features

  • scipy.misc module and all the methods in misc are deprecated in v1.10 and will be completely removed in SciPy v2.0.0. Users are suggested to utilize the scipy.datasets module instead for the dataset methods.
  • scipy.stats.qmc.LatinHypercube parameter centered has been deprecated. It is replaced by the scramble argument for more consistency with other QMC engines.
  • scipy.interpolate.interp2d class has been deprecated. The docstring of the deprecated routine lists recommended replacements.

Expired Deprecations

  • There is an ongoing effort to follow through on long-standing deprecations.
  • The following previously deprecated features are affected:

    • Removed cond & rcond kwargs in linalg.pinv
    • Removed wrappers scipy.linalg.blas.{clapack, flapack}
    • Removed scipy.stats.NumericalInverseHermite and removed tol & max_intervals kwargs from scipy.stats.sampling.NumericalInverseHermite
    • Removed local_search_options kwarg frrom scipy.optimize.dual_annealing.

Other changes

  • scipy.stats.bootstrap, scipy.stats.permutation_test, and scipy.stats.monte_carlo_test now automatically detect whether the provided statistic is vectorized by looking for an axis parameter in the signature of statistic. If an axis parameter is present in statistic but should not be relied on for vectorized calls, users must pass option vectorized==False explicitly.
  • scipy.stats.multivariate_normal will now raise a ValueError when the covariance matrix is not positive semidefinite, regardless of which method is called.

Authors

  • Name (commits)
  • h-vetinari (10)
  • Jelle Aalbers (1)
  • Alan-Hung (1) +
  • Tania Allard (7)
  • Oren Amsalem (1) +
  • Sven Baars (10)
  • Balthasar (1) +
  • Ross Barnowski (1)
  • Christoph Baumgarten (2)
  • Peter Bell (2)
  • Sebastian Berg (1)
  • Aaron Berk (1) +
  • boatwrong (1) +
  • Jake Bowhay (50)
  • Matthew Brett (4)
  • Evgeni Burovski (93)
  • Matthias Bussonnier (6)
  • Dominic C (2)
  • Mingbo Cai (1) +
  • James Campbell (2) +
  • CJ Carey (4)
  • cesaregarza (1) +
  • charlie0389 (1) +
  • Hood Chatham (5)
  • Andrew Chin (1) +
  • Daniel Ching (1) +
  • Leo Chow (1) +
  • chris (3) +
  • John Clow (1) +
  • cm7S (1) +
  • cmgodwin (1) +
  • Christopher Cowden (2) +
  • Henry Cuzco (2) +
  • Anirudh Dagar (10)
  • Hans Dembinski (2) +
  • Jaiden di Lanzo (24) +
  • Felipe Dias (1) +
  • Dieter Werthmüller (1)
  • Giuseppe Dilillo (1) +
  • dpoerio (1) +
  • drpeteb (1) +
  • Christopher Dupuis (1) +
  • Jordan Edmunds (1) +
  • Pieter Eendebak (1) +
  • Jérome Eertmans (1) +
  • Fabian Egli (2) +
  • Sebastian Ehlert (2) +
  • Kian Eliasi (1) +
  • Tomohiro Endo (1) +
  • Stefan Endres (1)
  • Zeb Engberg (4) +
  • Jonas Eschle (1) +
  • Thomas J. Fan (9)
  • fiveseven (1) +
  • Neil Flood (1) +
  • Franz Forstmayr (1)
  • Sara Fridovich-Keil (1)
  • David Gilbertson (1) +
  • Ralf Gommers (251)
  • Marco Gorelli (2) +
  • Matt Haberland (381)
  • Andrew Hawryluk (2) +
  • Christoph Hohnerlein (2) +
  • Loïc Houpert (2) +
  • Shamus Husheer (1) +
  • ideasrule (1) +
  • imoiwm (1) +
  • Lakshaya Inani (1) +
  • Joseph T. Iosue (1)
  • iwbc-mzk (1) +
  • Nathan Jacobi (3) +
  • Julien Jerphanion (5)
  • He Jia (1)
  • jmkuebler (1) +
  • Johannes Müller (1) +
  • Vedant Jolly (1) +
  • Juan Luis Cano Rodríguez (2)
  • Justin (1) +
  • jvavrek (1) +
  • jyuv (2)
  • Kai Mühlbauer (1) +
  • Nikita Karetnikov (3) +
  • Reinert Huseby Karlsen (1) +
  • kaspar (2) +
  • Toshiki Kataoka (1)
  • Robert Kern (3)
  • Joshua Klein (1) +
  • Andrew Knyazev (7)
  • Jozsef Kutas (16) +
  • Eric Larson (4)
  • Lechnio (1) +
  • Antony Lee (2)
  • Aditya Limaye (1) +
  • Xingyu Liu (2)
  • Christian Lorentzen (4)
  • Loïc Estève (2)
  • Thibaut Lunet (2) +
  • Peter Lysakovski (1)
  • marianasalamoni (2) +
  • mariprudencio (1) +
  • Paige Martin (1) +
  • Arno Marty (1) +
  • matthewborish (3) +
  • Damon McDougall (1)
  • Nicholas McKibben (22)
  • McLP (1) +
  • mdmahendri (1) +
  • Melissa Weber Mendonça (9)
  • Jarrod Millman (1)
  • Naoto Mizuno (2)
  • Shashaank N (1)
  • Pablo S Naharro (1) +
  • nboudrie (1) +
  • Andrew Nelson (52)
  • Nico Schlömer (1)
  • NiMlr (1) +
  • o-alexandre-felipe (1) +
  • Maureen Ononiwu (1) +
  • Dimitri Papadopoulos (2) +
  • partev (1) +
  • Tirth Patel (10)
  • Paulius Šarka (1) +
  • Josef Perktold (1)
  • Giacomo Petrillo (3) +
  • Matti Picus (1)
  • Rafael Pinto (1) +
  • PKNaveen (1) +
  • Ilhan Polat (6)
  • Akshita Prasanth (2) +
  • Sean Quinn (1)
  • Tyler Reddy (117)
  • Martin Reinecke (1)
  • Ned Richards (1)
  • Marie Roald (1) +
  • Sam Rosen (4) +
  • Pamphile Roy (103)
  • sabonerune (2) +
  • Atsushi Sakai (94)
  • Daniel Schmitz (27)
  • Anna Scholtz (1) +
  • Eli Schwartz (11)
  • serge-sans-paille (2)
  • JEEVANSHI SHARMA (1) +
  • ehsan shirvanian (2) +
  • siddhantwahal (2)
  • Mathieu Dutour Sikiric (1) +
  • Sourav Singh (1)
  • Alexander Soare (1) +
  • Bjørge Solli (2) +
  • Scott Staniewicz (1)
  • Albert Steppi (3)
  • Thomas Stoeger (1) +
  • Kai Striega (4)
  • Tartopohm (1) +
  • Mamoru TASAKA (2) +
  • Ewout ter Hoeven (5)
  • TianyiQ (1) +
  • Tiger (1) +
  • Will Tirone (1)
  • Edgar Andrés Margffoy Tuay (1) +
  • Dmitry Ulyumdzhiev (1) +
  • Hari Vamsi (1) +
  • VitalyChait (1) +
  • Rik Voorhaar (1) +
  • Samuel Wallan (4)
  • Stefan van der Walt (2)
  • Warren Weckesser (145)
  • wei2222 (1) +
  • windows-server-2003 (3) +
  • Marek Wojciechowski (2) +
  • Niels Wouda (1) +
  • WRKampi (1) +
  • Yeonjoo Yoo (1) +
  • Rory Yorke (1)
  • Xiao Yuan (2) +
  • Meekail Zain (2) +
  • Fabio Zanini (1) +
  • Steffen Zeile (1) +
  • Egor Zemlyanoy (19)
  • Gavin Zhang (3) +

A total of 180 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.9.3

SciPy 1.9.3 Release Notes

SciPy 1.9.3 is a bug-fix release with no new features compared to 1.9.2.

Authors

  • Jelle Aalbers (1)
  • Peter Bell (1)
  • Jake Bowhay (3)
  • Matthew Brett (3)
  • Evgeni Burovski (5)
  • drpeteb (1) +
  • Sebastian Ehlert (1) +
  • GavinZhang (1) +
  • Ralf Gommers (2)
  • Matt Haberland (15)
  • Lakshaya Inani (1) +
  • Joseph T. Iosue (1)
  • Nathan Jacobi (1) +
  • jmkuebler (1) +
  • Nikita Karetnikov (1) +
  • Lechnio (1) +
  • Nicholas McKibben (1)
  • Andrew Nelson (1)
  • o-alexandre-felipe (1) +
  • Tirth Patel (1)
  • Tyler Reddy (51)
  • Martin Reinecke (1)
  • Marie Roald (1) +
  • Pamphile Roy (2)
  • Eli Schwartz (1)
  • serge-sans-paille (1)
  • ehsan shirvanian (1) +
  • Mamoru TASAKA (1) +
  • Samuel Wallan (1)
  • Warren Weckesser (7)
  • Gavin Zhang (1) +

A total of 31 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.9.2

SciPy 1.9.2 Release Notes

SciPy 1.9.2 is a bug-fix release with no new features compared to 1.9.1. It also provides wheels for Python 3.11 on several platforms.

Authors

  • Hood Chatham (1)
  • Thomas J. Fan (1)
  • Ralf Gommers (22)
  • Matt Haberland (5)
  • Julien Jerphanion (1)
  • Loïc Estève (1)
  • Nicholas McKibben (2)
  • Naoto Mizuno (1)
  • Andrew Nelson (3)
  • Tyler Reddy (28)
  • Pamphile Roy (1)
  • Ewout ter Hoeven (2)
  • Warren Weckesser (1)
  • Meekail Zain (1) +

A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 3 years ago

scipy - SciPy 1.9.1

SciPy 1.9.1 Release Notes

SciPy 1.9.1 is a bug-fix release with no new features compared to 1.9.0. Notably, some important meson build fixes are included.

Authors

  • Anirudh Dagar (1)
  • Ralf Gommers (12)
  • Matt Haberland (2)
  • Andrew Nelson (1)
  • Tyler Reddy (14)
  • Atsushi Sakai (1)
  • Eli Schwartz (1)
  • Warren Weckesser (2)

A total of 8 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 4 years ago

scipy - SciPy 1.9.0

SciPy 1.9.0 Release Notes

SciPy 1.9.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.9.x branch, and on adding new features on the main branch.

This release requires Python 3.8-3.11 and NumPy 1.18.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • We have modernized our build system to use meson, substantially improving our build performance, and providing better build-time configuration and cross-compilation support,
  • Added scipy.optimize.milp, new function for mixed-integer linear programming,
  • Added scipy.stats.fit for fitting discrete and continuous distributions to data,
  • Tensor-product spline interpolation modes were added to scipy.interpolate.RegularGridInterpolator,
  • A new global optimizer (DIviding RECTangles algorithm) scipy.optimize.direct.

New features

scipy.interpolate improvements

  • Speed up the RBFInterpolator evaluation with high dimensional interpolants.
  • Added new spline based interpolation methods for scipy.interpolate.RegularGridInterpolator and its tutorial.
  • scipy.interpolate.RegularGridInterpolator and scipy.interpolate.interpn now accept descending ordered points.
  • RegularGridInterpolator now handles length-1 grid axes.
  • The BivariateSpline subclasses have a new method partial_derivative which constructs a new spline object representing a derivative of an original spline. This mirrors the corresponding functionality for univariate splines, splder and BSpline.derivative, and can substantially speed up repeated evaluation of derivatives.

scipy.linalg improvements

  • scipy.linalg.expm now accepts nD arrays. Its speed is also improved.
  • Minimum required LAPACK version is bumped to 3.7.1.

scipy.fft improvements

  • Added uarray multimethods for scipy.fft.fht and scipy.fft.ifht to allow provision of third party backend implementations such as those recently added to CuPy.

scipy.optimize improvements

  • A new global optimizer, scipy.optimize.direct (DIviding RECTangles algorithm) was added. For problems with inexpensive function evaluations, like the ones in the SciPy benchmark suite, direct is competitive with the best other solvers in SciPy (dual_annealing and differential_evolution) in terms of execution time. See gh-14300 <https://github.com/scipy/scipy/pull/14300>__ for more details.

  • Add a full_output parameter to scipy.optimize.curve_fit to output additional solution information.

  • Add a integrality parameter to scipy.optimize.differential_evolution, enabling integer constraints on parameters.

  • Add a vectorized parameter to call a vectorized objective function only once per iteration. This can improve minimization speed by reducing interpreter overhead from the multiple objective function calls.

  • The default method of scipy.optimize.linprog is now 'highs'.

  • Added scipy.optimize.milp, new function for mixed-integer linear programming.

  • Added Newton-TFQMR method to newton_krylov.

  • Added support for the Bounds class in shgo and dual_annealing for a more uniform API across scipy.optimize.

  • Added the vectorized keyword to differential_evolution.

  • approx_fprime now works with vector-valued functions.

scipy.signal improvements

  • The new window function scipy.signal.windows.kaiser_bessel_derived was added to compute the Kaiser-Bessel derived window.
  • Single-precision hilbert operations are now faster as a result of more consistent dtype handling.

scipy.sparse improvements

  • Add a copy parameter to scipy.sparce.csgraph.laplacian. Using inplace computation with copy=False reduces the memory footprint.
  • Add a dtype parameter to scipy.sparce.csgraph.laplacian for type casting.
  • Add a symmetrized parameter to scipy.sparce.csgraph.laplacian to produce symmetric Laplacian for directed graphs.
  • Add a form parameter to scipy.sparce.csgraph.laplacian taking one of the three values: array, or function, or lo determining the format of the output Laplacian:
    • array is a numpy array (backward compatible default);
    • function is a pointer to a lambda-function evaluating the Laplacian-vector or Laplacian-matrix product;
    • lo results in the format of the LinearOperator.

scipy.sparse.linalg improvements

  • lobpcg performance improvements for small input cases.

scipy.spatial improvements

  • Add an order parameter to scipy.spatial.transform.Rotation.from_quat and scipy.spatial.transform.Rotation.as_quat to specify quaternion format.

scipy.stats improvements

  • scipy.stats.monte_carlo_test performs one-sample Monte Carlo hypothesis tests to assess whether a sample was drawn from a given distribution. Besides reproducing the results of hypothesis tests like scipy.stats.ks_1samp, scipy.stats.normaltest, and scipy.stats.cramervonmises without small sample size limitations, it makes it possible to perform similar tests using arbitrary statistics and distributions.

  • Several scipy.stats functions support new axis (integer or tuple of integers) and nan_policy ('raise', 'omit', or 'propagate'), and keepdims arguments. These functions also support masked arrays as inputs, even if they do not have a scipy.stats.mstats counterpart. Edge cases for multidimensional arrays, such as when axis-slices have no unmasked elements or entire inputs are of size zero, are handled consistently.

  • Add a weight parameter to scipy.stats.hmean.

  • Several improvements have been made to scipy.stats.levy_stable. Substantial improvement has been made for numerical evaluation of the pdf and cdf, resolving #12658 and #14944. The improvement is particularly dramatic for stability parameter alpha close to or equal to 1 and for alpha below but approaching its maximum value of 2. The alternative fast Fourier transform based method for pdf calculation has also been updated to use the approach of Wang and Zhang from their 2008 conference paper Simpson’s rule based FFT method to compute densities of stable distribution, making this method more competitive with the default method. In addition, users now have the option to change the parametrization of the Levy Stable distribution to Nolan's "S0" parametrization which is used internally by SciPy's pdf and cdf implementations. The "S0" parametrization is described in Nolan's paper Numerical calculation of stable densities and distribution functions upon which SciPy's implementation is based. "S0" has the advantage that delta and gamma are proper location and scale parameters. With delta and gamma fixed, the location and scale of the resulting distribution remain unchanged as alpha and beta change. This is not the case for the default "S1" parametrization. Finally, more options have been exposed to allow users to trade off between runtime and accuracy for both the default and FFT methods of pdf and cdf calculation. More information can be found in the documentation here (to be linked).

  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.

  • The methods "pearson" and "tippet" from scipy.stats.combine_pvalues have been fixed to return the correct p-values, resolving #15373. In addition, the documentation for scipy.stats.combine_pvalues has been expanded and improved.

  • Unlike other reduction functions, stats.mode didn't consume the axis being operated on and failed for negative axis inputs. Both the bugs have been fixed. Note that stats.mode will now consume the input axis and return an ndarray with the axis dimension removed.

  • Replaced implementation of scipy.stats.ncf with the implementation from Boost for improved reliability.

  • Add a bits parameter to scipy.stats.qmc.Sobol. It allows to use from 0 to 64 bits to compute the sequence. Default is None which corresponds to 30 for backward compatibility. Using a higher value allow to sample more points. Note: bits does not affect the output dtype.

  • Add a integers method to scipy.stats.qmc.QMCEngine. It allows sampling integers using any QMC sampler.

  • Improved the fit speed and accuracy of stats.pareto.

  • Added qrvs method to NumericalInversePolynomial to match the situation for NumericalInverseHermite.

  • Faster random variate generation for gennorm and nakagami.

  • lloyd_centroidal_voronoi_tessellation has been added to allow improved sample distributions via iterative application of Voronoi diagrams and centering operations

  • Add scipy.stats.qmc.PoissonDisk to sample using the Poisson disk sampling method. It guarantees that samples are separated from each other by a given radius.

  • Add scipy.stats.pmean to calculate the weighted power mean also called generalized mean.

Deprecated features

  • Due to collision with the shape parameter n of several distributions, use of the distribution moment method with keyword argument n is deprecated. Keyword n is replaced with keyword order.
  • Similarly, use of the distribution interval method with keyword arguments alpha is deprecated. Keyword alpha is replaced with keyword confidence.
  • The 'simplex', 'revised simplex', and 'interior-point' methods of scipy.optimize.linprog are deprecated. Methods highs, highs-ds, or highs-ipm should be used in new code.
  • Support for non-numeric arrays has been deprecated from stats.mode. pandas.DataFrame.mode can be used instead.
  • The function spatial.distance.kulsinski has been deprecated in favor of spatial.distance.kulczynski1.
  • The maxiter keyword of the truncated Newton (TNC) algorithm has been deprecated in favour of maxfun.
  • The vertices keyword of Delauney.qhull now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.
  • The extradoc keyword of rv_continuous, rv_discrete and rv_sample now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Object arrays in sparse matrices now raise an error.
  • Inexact indices into sparse matrices now raise an error.
  • Passing radius=None to scipy.spatial.SphericalVoronoi now raises an error (not adding radius defaults to 1, as before).
  • Several BSpline methods now raise an error if inputs have ndim > 1.
  • The _rvs method of statistical distributions now requires a size parameter.
  • Passing a fillvalue that cannot be cast to the output type in scipy.signal.convolve2d now raises an error.
  • scipy.spatial.distance now enforces that the input vectors are one-dimensional.
  • Removed stats.itemfreq.
  • Removed stats.median_absolute_deviation.
  • Removed n_jobs keyword argument and use of k=None from kdtree.query.
  • Removed right keyword from interpolate.PPoly.extend.
  • Removed debug keyword from scipy.linalg.solve_*.
  • Removed class _ppform scipy.interpolate.
  • Removed BSR methods matvec and matmat.
  • Removed mlab truncation mode from cluster.dendrogram.
  • Removed cluster.vq.py_vq2.
  • Removed keyword arguments ftol and xtol from optimize.minimize(method='Nelder-Mead').
  • Removed signal.windows.hanning.
  • Removed LAPACK gegv functions from linalg; this raises the minimally required LAPACK version to 3.7.1.
  • Removed spatial.distance.matching.
  • Removed the alias scipy.random for numpy.random.
  • Removed docstring related functions from scipy.misc (docformat, inherit_docstring_from, extend_notes_in_docstring, replace_notes_in_docstring, indentcount_lines, filldoc, unindent_dict, unindent_string).
  • Removed linalg.pinv2.

Backwards incompatible changes

  • Several scipy.stats functions now convert np.matrix to np.ndarrays before the calculation is performed. In this case, the output will be a scalar or np.ndarray of appropriate shape rather than a 2D np.matrix. Similarly, while masked elements of masked arrays are still ignored, the output will be a scalar or np.ndarray rather than a masked array with mask=False.
  • The default method of scipy.optimize.linprog is now 'highs', not 'interior-point' (which is now deprecated), so callback functions and some options are no longer supported with the default method. With the default method, the x attribute of the returned OptimizeResult is now None (instead of a non-optimal array) when an optimal solution cannot be found (e.g. infeasible problem).
  • For scipy.stats.combine_pvalues, the sign of the test statistic returned for the method "pearson" has been flipped so that higher values of the statistic now correspond to lower p-values, making the statistic more consistent with those of the other methods and with the majority of the literature.
  • scipy.linalg.expm due to historical reasons was using the sparse implementation and thus was accepting sparse arrays. Now it only works with nDarrays. For sparse usage, scipy.sparse.linalg.expm needs to be used explicitly.
  • The definition of scipy.stats.circvar has reverted to the one that is standard in the literature; note that this is not the same as the square of scipy.stats.circstd.
  • Remove inheritance to QMCEngine in MultinomialQMC and MultivariateNormalQMC. It removes the methods fast_forward and reset.
  • Init of MultinomialQMC now require the number of trials with n_trials. Hence, MultinomialQMC.random output has now the correct shape (n, pvals).
  • Several function-specific warnings (F_onewayConstantInputWarning, F_onewayBadInputSizesWarning, PearsonRConstantInputWarning, PearsonRNearConstantInputWarning, SpearmanRConstantInputWarning, and BootstrapDegenerateDistributionWarning) have been replaced with more general warnings.

Other changes

  • A draft developer CLI is available for SciPy, leveraging the doit, click and rich-click tools. For more details, see gh-15959.

  • The SciPy contributor guide has been reorganized and updated (see #15947 for details).

  • QUADPACK Fortran routines in scipy.integrate, which power scipy.integrate.quad, have been marked as recursive. This should fix rare issues in multivariate integration (nquad and friends) and obviate the need for compiler-specific compile flags (/recursive for ifort etc). Please file an issue if this change turns out problematic for you. This is also true for FITPACK routines in scipy.interpolate, which power splrep, splev etc., and *UnivariateSpline and *BivariateSpline classes.

  • the USE_PROPACK environment variable has been renamed to SCIPY_USE_PROPACK; setting to a non-zero value will enable the usage of the PROPACK library as before

  • Building SciPy on windows with MSVC now requires at least the vc142 toolset (available in Visual Studio 2019 and higher).

Lazy access to subpackages

Before this release, all subpackages of SciPy (cluster, fft, ndimage, etc.) had to be explicitly imported. Now, these subpackages are lazily loaded as soon as they are accessed, so that the following is possible (if desired for interactive use, it's not actually recommended for code, see :ref:scipy-api): import scipy as sp; sp.fft.dct([1, 2, 3]). Advantages include: making it easier to navigate SciPy in interactive terminals, reducing subpackage import conflicts (which before required import networkx.linalg as nla; import scipy.linalg as sla), and avoiding repeatedly having to update imports during teaching & experimentation. Also see the related community specification document.

SciPy switched to Meson as its build system

This is the first release that ships with Meson as the build system. When installing with pip or pypa/build, Meson will be used (invoked via the meson-python build hook). This change brings significant benefits - most importantly much faster build times, but also better support for cross-compilation and cleaner build logs.

Note:

This release still ships with support for numpy.distutils-based builds as well. Those can be invoked through the setup.py command-line interface (e.g., python setup.py install). It is planned to remove numpy.distutils support before the 1.10.0 release.

When building from source, a number of things have changed compared to building with numpy.distutils:

  • New build dependencies: meson, ninja, and pkg-config. setuptools and wheel are no longer needed.
  • BLAS and LAPACK libraries that are supported haven't changed, however the discovery mechanism has: that is now using pkg-config instead of hardcoded paths or a site.cfg file.
  • The build defaults to using OpenBLAS. See :ref:blas-lapack-selection for details.

The two CLIs that can be used to build wheels are pip and build. In addition, the SciPy repo contains a python dev.py CLI for any kind of development task (see its --help for details). For a comparison between old (distutils) and new (meson) build commands, see :ref:meson-faq.

For more information on the introduction of Meson support in SciPy, see gh-13615 <https://github.com/scipy/scipy/issues/13615>__ and this blog post <https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson/>__.

Authors

  • endolith (12)
  • h-vetinari (11)
  • Caio Agiani (2) +
  • Emmy Albert (1) +
  • Joseph Albert (1)
  • Tania Allard (3)
  • Carsten Allefeld (1) +
  • Kartik Anand (1) +
  • Virgile Andreani (2) +
  • Weh Andreas (1) +
  • Francesco Andreuzzi (5) +
  • Kian-Meng Ang (2) +
  • Gerrit Ansmann (1)
  • Ar-Kareem (1) +
  • Shehan Atukorala (1) +
  • avishai231 (1) +
  • Blair Azzopardi (1)
  • Sayantika Banik (2) +
  • Ross Barnowski (9)
  • Christoph Baumgarten (3)
  • Nickolai Belakovski (1)
  • Peter Bell (9)
  • Sebastian Berg (3)
  • Bharath (1) +
  • bobcatCA (2) +
  • boussoffara (2) +
  • Islem BOUZENIA (1) +
  • Jake Bowhay (41) +
  • Matthew Brett (11)
  • Dietrich Brunn (2) +
  • Michael Burkhart (2) +
  • Evgeni Burovski (96)
  • Matthias Bussonnier (20)
  • Dominic C (1)
  • Cameron (1) +
  • CJ Carey (3)
  • Thomas A Caswell (2)
  • Ali Cetin (2) +
  • Hood Chatham (5) +
  • Klesk Chonkin (1)
  • Craig Citro (1) +
  • Dan Cogswell (1) +
  • Luigi Cruz (1) +
  • Anirudh Dagar (5)
  • Brandon David (1)
  • deepakdinesh1123 (1) +
  • Denton DeLoss (1) +
  • derbuihan (2) +
  • Sameer Deshmukh (13) +
  • Niels Doucet (1) +
  • DWesl (8)
  • eytanadler (30) +
  • Thomas J. Fan (5)
  • Isuru Fernando (3)
  • Joseph Fox-Rabinovitz (1)
  • Ryan Gibson (4) +
  • Ralf Gommers (327)
  • Srinivas Gorur-Shandilya (1) +
  • Alex Griffing (2)
  • Matt Haberland (461)
  • Tristan Hearn (1) +
  • Jonathan Helgert (1) +
  • Samuel Hinton (1) +
  • Jake (1) +
  • Stewart Jamieson (1) +
  • Jan-Hendrik Müller (1)
  • Yikun Jiang (1) +
  • JuliaMelle01 (1) +
  • jyuv (12) +
  • Toshiki Kataoka (1)
  • Chris Keefe (1) +
  • Robert Kern (4)
  • Andrew Knyazev (11)
  • Matthias Koeppe (4) +
  • Sergey Koposov (1)
  • Volodymyr Kozachynskyi (1) +
  • Yotaro Kubo (2) +
  • Jacob Lapenna (1) +
  • Peter Mahler Larsen (8)
  • Eric Larson (4)
  • Laurynas Mikšys (1) +
  • Antony Lee (1)
  • Gregory R. Lee (2)
  • lerichi (1) +
  • Tim Leslie (2)
  • P. L. Lim (1)
  • Smit Lunagariya (43)
  • lutefiskhotdish (1) +
  • Cong Ma (12)
  • Syrtis Major (1)
  • Nicholas McKibben (18)
  • Melissa Weber Mendonça (10)
  • Mark Mikofski (1)
  • Jarrod Millman (13)
  • Harsh Mishra (6)
  • ML-Nielsen (3) +
  • Matthew Murray (1) +
  • Andrew Nelson (50)
  • Dimitri Papadopoulos Orfanos (1) +
  • Evgueni Ovtchinnikov (2) +
  • Sambit Panda (1)
  • Nick Papior (2)
  • Tirth Patel (43)
  • Petar Mlinarić (1)
  • petroselo (1) +
  • Ilhan Polat (64)
  • Anthony Polloreno (1)
  • Amit Portnoy (1) +
  • Quentin Barthélemy (9)
  • Patrick N. Raanes (1) +
  • Tyler Reddy (185)
  • Pamphile Roy (199)
  • Vivek Roy (2) +
  • sabonerune (1) +
  • Niyas Sait (2) +
  • Atsushi Sakai (25)
  • Mazen Sayed (1) +
  • Eduardo Schettino (5) +
  • Daniel Schmitz (6) +
  • Eli Schwartz (4) +
  • SELEE (2) +
  • Namami Shanker (4)
  • siddhantwahal (1) +
  • Gagandeep Singh (8)
  • Soph (1) +
  • Shivnaren Srinivasan (1) +
  • Scott Staniewicz (1) +
  • Leo C. Stein (4)
  • Albert Steppi (7)
  • Christopher Strickland (1) +
  • Kai Striega (4)
  • Søren Fuglede Jørgensen (1)
  • Aleksandr Tagilov (1) +
  • Masayuki Takagi (1) +
  • Sai Teja (1) +
  • Ewout ter Hoeven (2) +
  • Will Tirone (2)
  • Bas van Beek (7)
  • Dhruv Vats (1)
  • Arthur Volant (1)
  • Samuel Wallan (5)
  • Stefan van der Walt (8)
  • Warren Weckesser (84)
  • Anreas Weh (1)
  • Nils Werner (1)
  • Aviv Yaish (1) +
  • Dowon Yi (1)
  • Rory Yorke (1)
  • Yosshi999 (1) +
  • yuanx749 (2) +
  • Gang Zhao (23)
  • ZhihuiChen0903 (1)
  • Pavel Zun (1) +
  • David Zwicker (1) +

A total of 154 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 4 years ago

scipy - SciPy 1.9.0rc3

SciPy 1.9.0 Release Notes

Note: SciPy 1.9.0 is not released yet!

SciPy 1.9.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.9.x branch, and on adding new features on the main branch.

This release requires Python 3.8-3.11 and NumPy 1.18.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • We have modernized our build system to use meson, substantially improving our build performance, and providing better build-time configuration and cross-compilation support,
  • Added scipy.optimize.milp, new function for mixed-integer linear programming,
  • Added scipy.stats.fit for fitting discrete and continuous distributions to data,
  • Tensor-product spline interpolation modes were added to scipy.interpolate.RegularGridInterpolator,
  • A new global optimizer (DIviding RECTangles algorithm) scipy.optimize.direct.

New features

scipy.interpolate improvements

  • Speed up the RBFInterpolator evaluation with high dimensional interpolants.
  • Added new spline based interpolation methods for scipy.interpolate.RegularGridInterpolator and its tutorial.
  • scipy.interpolate.RegularGridInterpolator and scipy.interpolate.interpn now accept descending ordered points.
  • RegularGridInterpolator now handles length-1 grid axes.
  • The BivariateSpline subclasses have a new method partial_derivative which constructs a new spline object representing a derivative of an original spline. This mirrors the corresponding functionality for univariate splines, splder and BSpline.derivative, and can substantially speed up repeated evaluation of derivatives.

scipy.linalg improvements

  • scipy.linalg.expm now accepts nD arrays. Its speed is also improved.
  • Minimum required LAPACK version is bumped to 3.7.1.

scipy.fft improvements

  • Added uarray multimethods for scipy.fft.fht and scipy.fft.ifht to allow provision of third party backend implementations such as those recently added to CuPy.

scipy.optimize improvements

  • A new global optimizer, scipy.optimize.direct (DIviding RECTangles algorithm) was added. For problems with inexpensive function evaluations, like the ones in the SciPy benchmark suite, direct is competitive with the best other solvers in SciPy (dual_annealing and differential_evolution) in terms of execution time. See gh-14300 <https://github.com/scipy/scipy/pull/14300>__ for more details.

  • Add a full_output parameter to scipy.optimize.curve_fit to output additional solution information.

  • Add a integrality parameter to scipy.optimize.differential_evolution, enabling integer constraints on parameters.

  • Add a vectorized parameter to call a vectorized objective function only once per iteration. This can improve minimization speed by reducing interpreter overhead from the multiple objective function calls.

  • The default method of scipy.optimize.linprog is now 'highs'.

  • Added scipy.optimize.milp, new function for mixed-integer linear programming.

  • Added Newton-TFQMR method to newton_krylov.

  • Added support for the Bounds class in shgo and dual_annealing for a more uniform API across scipy.optimize.

  • Added the vectorized keyword to differential_evolution.

  • approx_fprime now works with vector-valued functions.

scipy.signal improvements

  • The new window function scipy.signal.windows.kaiser_bessel_derived was added to compute the Kaiser-Bessel derived window.
  • Single-precision hilbert operations are now faster as a result of more consistent dtype handling.

scipy.sparse improvements

  • Add a copy parameter to scipy.sparce.csgraph.laplacian. Using inplace computation with copy=False reduces the memory footprint.
  • Add a dtype parameter to scipy.sparce.csgraph.laplacian for type casting.
  • Add a symmetrized parameter to scipy.sparce.csgraph.laplacian to produce symmetric Laplacian for directed graphs.
  • Add a form parameter to scipy.sparce.csgraph.laplacian taking one of the three values: array, or function, or lo determining the format of the output Laplacian:
    • array is a numpy array (backward compatible default);
    • function is a pointer to a lambda-function evaluating the Laplacian-vector or Laplacian-matrix product;
    • lo results in the format of the LinearOperator.

scipy.sparse.linalg improvements

  • lobpcg performance improvements for small input cases.

scipy.spatial improvements

  • Add an order parameter to scipy.spatial.transform.Rotation.from_quat and scipy.spatial.transform.Rotation.as_quat to specify quaternion format.

scipy.stats improvements

  • scipy.stats.monte_carlo_test performs one-sample Monte Carlo hypothesis tests to assess whether a sample was drawn from a given distribution. Besides reproducing the results of hypothesis tests like scipy.stats.ks_1samp, scipy.stats.normaltest, and scipy.stats.cramervonmises without small sample size limitations, it makes it possible to perform similar tests using arbitrary statistics and distributions.

  • Several scipy.stats functions support new axis (integer or tuple of integers) and nan_policy ('raise', 'omit', or 'propagate'), and keepdims arguments. These functions also support masked arrays as inputs, even if they do not have a scipy.stats.mstats counterpart. Edge cases for multidimensional arrays, such as when axis-slices have no unmasked elements or entire inputs are of size zero, are handled consistently.

  • Add a weight parameter to scipy.stats.hmean.

  • Several improvements have been made to scipy.stats.levy_stable. Substantial improvement has been made for numerical evaluation of the pdf and cdf, resolving #12658 and #14944. The improvement is particularly dramatic for stability parameter alpha close to or equal to 1 and for alpha below but approaching its maximum value of 2. The alternative fast Fourier transform based method for pdf calculation has also been updated to use the approach of Wang and Zhang from their 2008 conference paper Simpson’s rule based FFT method to compute densities of stable distribution, making this method more competitive with the default method. In addition, users now have the option to change the parametrization of the Levy Stable distribution to Nolan's "S0" parametrization which is used internally by SciPy's pdf and cdf implementations. The "S0" parametrization is described in Nolan's paper Numerical calculation of stable densities and distribution functions upon which SciPy's implementation is based. "S0" has the advantage that delta and gamma are proper location and scale parameters. With delta and gamma fixed, the location and scale of the resulting distribution remain unchanged as alpha and beta change. This is not the case for the default "S1" parametrization. Finally, more options have been exposed to allow users to trade off between runtime and accuracy for both the default and FFT methods of pdf and cdf calculation. More information can be found in the documentation here (to be linked).

  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.

  • The methods "pearson" and "tippet" from scipy.stats.combine_pvalues have been fixed to return the correct p-values, resolving #15373. In addition, the documentation for scipy.stats.combine_pvalues has been expanded and improved.

  • Unlike other reduction functions, stats.mode didn't consume the axis being operated on and failed for negative axis inputs. Both the bugs have been fixed. Note that stats.mode will now consume the input axis and return an ndarray with the axis dimension removed.

  • Replaced implementation of scipy.stats.ncf with the implementation from Boost for improved reliability.

  • Add a bits parameter to scipy.stats.qmc.Sobol. It allows to use from 0 to 64 bits to compute the sequence. Default is None which corresponds to 30 for backward compatibility. Using a higher value allow to sample more points. Note: bits does not affect the output dtype.

  • Add a integers method to scipy.stats.qmc.QMCEngine. It allows sampling integers using any QMC sampler.

  • Improved the fit speed and accuracy of stats.pareto.

  • Added qrvs method to NumericalInversePolynomial to match the situation for NumericalInverseHermite.

  • Faster random variate generation for gennorm and nakagami.

  • lloyd_centroidal_voronoi_tessellation has been added to allow improved sample distributions via iterative application of Voronoi diagrams and centering operations

  • Add scipy.stats.qmc.PoissonDisk to sample using the Poisson disk sampling method. It guarantees that samples are separated from each other by a given radius.

  • Add scipy.stats.pmean to calculate the weighted power mean also called generalized mean.

Deprecated features

  • Due to collision with the shape parameter n of several distributions, use of the distribution moment method with keyword argument n is deprecated. Keyword n is replaced with keyword order.
  • Similarly, use of the distribution interval method with keyword arguments alpha is deprecated. Keyword alpha is replaced with keyword confidence.
  • The 'simplex', 'revised simplex', and 'interior-point' methods of scipy.optimize.linprog are deprecated. Methods highs, highs-ds, or highs-ipm should be used in new code.
  • Support for non-numeric arrays has been deprecated from stats.mode. pandas.DataFrame.mode can be used instead.
  • The function spatial.distance.kulsinski has been deprecated in favor of spatial.distance.kulczynski1.
  • The maxiter keyword of the truncated Newton (TNC) algorithm has been deprecated in favour of maxfun.
  • The vertices keyword of Delauney.qhull now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.
  • The extradoc keyword of rv_continuous, rv_discrete and rv_sample now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Object arrays in sparse matrices now raise an error.
  • Inexact indices into sparse matrices now raise an error.
  • Passing radius=None to scipy.spatial.SphericalVoronoi now raises an error (not adding radius defaults to 1, as before).
  • Several BSpline methods now raise an error if inputs have ndim > 1.
  • The _rvs method of statistical distributions now requires a size parameter.
  • Passing a fillvalue that cannot be cast to the output type in scipy.signal.convolve2d now raises an error.
  • scipy.spatial.distance now enforces that the input vectors are one-dimensional.
  • Removed stats.itemfreq.
  • Removed stats.median_absolute_deviation.
  • Removed n_jobs keyword argument and use of k=None from kdtree.query.
  • Removed right keyword from interpolate.PPoly.extend.
  • Removed debug keyword from scipy.linalg.solve_*.
  • Removed class _ppform scipy.interpolate.
  • Removed BSR methods matvec and matmat.
  • Removed mlab truncation mode from cluster.dendrogram.
  • Removed cluster.vq.py_vq2.
  • Removed keyword arguments ftol and xtol from optimize.minimize(method='Nelder-Mead').
  • Removed signal.windows.hanning.
  • Removed LAPACK gegv functions from linalg; this raises the minimally required LAPACK version to 3.7.1.
  • Removed spatial.distance.matching.
  • Removed the alias scipy.random for numpy.random.
  • Removed docstring related functions from scipy.misc (docformat, inherit_docstring_from, extend_notes_in_docstring, replace_notes_in_docstring, indentcount_lines, filldoc, unindent_dict, unindent_string).
  • Removed linalg.pinv2.

Backwards incompatible changes

  • Several scipy.stats functions now convert np.matrix to np.ndarrays before the calculation is performed. In this case, the output will be a scalar or np.ndarray of appropriate shape rather than a 2D np.matrix. Similarly, while masked elements of masked arrays are still ignored, the output will be a scalar or np.ndarray rather than a masked array with mask=False.
  • The default method of scipy.optimize.linprog is now 'highs', not 'interior-point' (which is now deprecated), so callback functions and some options are no longer supported with the default method. With the default method, the x attribute of the returned OptimizeResult is now None (instead of a non-optimal array) when an optimal solution cannot be found (e.g. infeasible problem).
  • For scipy.stats.combine_pvalues, the sign of the test statistic returned for the method "pearson" has been flipped so that higher values of the statistic now correspond to lower p-values, making the statistic more consistent with those of the other methods and with the majority of the literature.
  • scipy.linalg.expm due to historical reasons was using the sparse implementation and thus was accepting sparse arrays. Now it only works with nDarrays. For sparse usage, scipy.sparse.linalg.expm needs to be used explicitly.
  • The definition of scipy.stats.circvar has reverted to the one that is standard in the literature; note that this is not the same as the square of scipy.stats.circstd.
  • Remove inheritance to QMCEngine in MultinomialQMC and MultivariateNormalQMC. It removes the methods fast_forward and reset.
  • Init of MultinomialQMC now require the number of trials with n_trials. Hence, MultinomialQMC.random output has now the correct shape (n, pvals).
  • Several function-specific warnings (F_onewayConstantInputWarning, F_onewayBadInputSizesWarning, PearsonRConstantInputWarning, PearsonRNearConstantInputWarning, SpearmanRConstantInputWarning, and BootstrapDegenerateDistributionWarning) have been replaced with more general warnings.

Other changes

  • A draft developer CLI is available for SciPy, leveraging the doit, click and rich-click tools. For more details, see gh-15959.

  • The SciPy contributor guide has been reorganized and updated (see #15947 for details).

  • QUADPACK Fortran routines in scipy.integrate, which power scipy.integrate.quad, have been marked as recursive. This should fix rare issues in multivariate integration (nquad and friends) and obviate the need for compiler-specific compile flags (/recursive for ifort etc). Please file an issue if this change turns out problematic for you. This is also true for FITPACK routines in scipy.interpolate, which power splrep, splev etc., and *UnivariateSpline and *BivariateSpline classes.

  • the USE_PROPACK environment variable has been renamed to SCIPY_USE_PROPACK; setting to a non-zero value will enable the usage of the PROPACK library as before

  • Building SciPy on windows with MSVC now requires at least the vc142 toolset (available in Visual Studio 2019 and higher).

Lazy access to subpackages

Before this release, all subpackages of SciPy (cluster, fft, ndimage, etc.) had to be explicitly imported. Now, these subpackages are lazily loaded as soon as they are accessed, so that the following is possible (if desired for interactive use, it's not actually recommended for code, see :ref:scipy-api): import scipy as sp; sp.fft.dct([1, 2, 3]). Advantages include: making it easier to navigate SciPy in interactive terminals, reducing subpackage import conflicts (which before required import networkx.linalg as nla; import scipy.linalg as sla), and avoiding repeatedly having to update imports during teaching & experimentation. Also see the related community specification document.

SciPy switched to Meson as its build system

This is the first release that ships with Meson as the build system. When installing with pip or pypa/build, Meson will be used (invoked via the meson-python build hook). This change brings significant benefits - most importantly much faster build times, but also better support for cross-compilation and cleaner build logs.

Note:

This release still ships with support for numpy.distutils-based builds as well. Those can be invoked through the setup.py command-line interface (e.g., python setup.py install). It is planned to remove numpy.distutils support before the 1.10.0 release.

When building from source, a number of things have changed compared to building with numpy.distutils:

  • New build dependencies: meson, ninja, and pkg-config. setuptools and wheel are no longer needed.
  • BLAS and LAPACK libraries that are supported haven't changed, however the discovery mechanism has: that is now using pkg-config instead of hardcoded paths or a site.cfg file.
  • The build defaults to using OpenBLAS. See :ref:blas-lapack-selection for details.

The two CLIs that can be used to build wheels are pip and build. In addition, the SciPy repo contains a python dev.py CLI for any kind of development task (see its --help for details). For a comparison between old (distutils) and new (meson) build commands, see :ref:meson-faq.

For more information on the introduction of Meson support in SciPy, see gh-13615 <https://github.com/scipy/scipy/issues/13615>__ and this blog post <https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson/>__.

Authors

  • endolith (12)
  • Caio Agiani (2) +
  • Emmy Albert (1) +
  • Joseph Albert (1)
  • Tania Allard (3)
  • Carsten Allefeld (1) +
  • Kartik Anand (1) +
  • Virgile Andreani (2) +
  • Weh Andreas (1) +
  • Francesco Andreuzzi (5) +
  • Kian-Meng Ang (2) +
  • Gerrit Ansmann (1)
  • Ar-Kareem (1) +
  • Shehan Atukorala (1) +
  • avishai231 (1) +
  • Blair Azzopardi (1)
  • Sayantika Banik (2) +
  • Ross Barnowski (9)
  • Christoph Baumgarten (3)
  • Nickolai Belakovski (1)
  • Peter Bell (9)
  • Sebastian Berg (3)
  • Bharath (1) +
  • bobcatCA (2) +
  • boussoffara (2) +
  • Islem BOUZENIA (1) +
  • Jake Bowhay (41) +
  • Matthew Brett (11)
  • Dietrich Brunn (2) +
  • Michael Burkhart (2) +
  • Evgeni Burovski (96)
  • Matthias Bussonnier (20)
  • Dominic C (1)
  • Cameron (1) +
  • CJ Carey (3)
  • Thomas A Caswell (2)
  • Ali Cetin (2) +
  • Hood Chatham (5) +
  • Klesk Chonkin (1)
  • Craig Citro (1) +
  • Dan Cogswell (1) +
  • Luigi Cruz (1) +
  • Anirudh Dagar (5)
  • Brandon David (1)
  • deepakdinesh1123 (1) +
  • Denton DeLoss (1) +
  • derbuihan (2) +
  • Sameer Deshmukh (13) +
  • Niels Doucet (1) +
  • DWesl (8)
  • eytanadler (30) +
  • Thomas J. Fan (5)
  • Isuru Fernando (3)
  • Joseph Fox-Rabinovitz (1)
  • Ryan Gibson (4) +
  • Ralf Gommers (323)
  • Srinivas Gorur-Shandilya (1) +
  • Alex Griffing (2)
  • h-vetinari (5)
  • Matt Haberland (459)
  • Tristan Hearn (1) +
  • Jonathan Helgert (1) +
  • Samuel Hinton (1) +
  • Jake (1) +
  • Stewart Jamieson (1) +
  • Jan-Hendrik Müller (1)
  • Yikun Jiang (1) +
  • JuliaMelle01 (1) +
  • jyuv (12) +
  • Toshiki Kataoka (1)
  • Chris Keefe (1) +
  • Robert Kern (4)
  • Andrew Knyazev (11)
  • Matthias Koeppe (4) +
  • Sergey Koposov (1)
  • Volodymyr Kozachynskyi (1) +
  • Yotaro Kubo (2) +
  • Jacob Lapenna (1) +
  • Peter Mahler Larsen (8)
  • Eric Larson (4)
  • Laurynas Mikšys (1) +
  • Antony Lee (1)
  • Gregory R. Lee (2)
  • lerichi (1) +
  • Tim Leslie (2)
  • P. L. Lim (1)
  • Smit Lunagariya (43)
  • lutefiskhotdish (1) +
  • Cong Ma (12)
  • Syrtis Major (1)
  • Nicholas McKibben (18)
  • Melissa Weber Mendonça (10)
  • Mark Mikofski (1)
  • Jarrod Millman (13)
  • Harsh Mishra (6)
  • ML-Nielsen (3) +
  • Matthew Murray (1) +
  • Andrew Nelson (50)
  • Dimitri Papadopoulos Orfanos (1) +
  • Evgueni Ovtchinnikov (2) +
  • Sambit Panda (1)
  • Nick Papior (2)
  • Tirth Patel (43)
  • Petar Mlinarić (1)
  • petroselo (1) +
  • Ilhan Polat (64)
  • Anthony Polloreno (1)
  • Amit Portnoy (1) +
  • Quentin Barthélemy (9)
  • Patrick N. Raanes (1) +
  • Tyler Reddy (174)
  • Pamphile Roy (197)
  • Vivek Roy (2) +
  • sabonerune (1) +
  • Niyas Sait (2) +
  • Atsushi Sakai (25)
  • Mazen Sayed (1) +
  • Eduardo Schettino (5) +
  • Daniel Schmitz (6) +
  • Eli Schwartz (4) +
  • SELEE (2) +
  • Namami Shanker (4)
  • siddhantwahal (1) +
  • Gagandeep Singh (8)
  • Soph (1) +
  • Shivnaren Srinivasan (1) +
  • Scott Staniewicz (1) +
  • Leo C. Stein (4)
  • Albert Steppi (7)
  • Christopher Strickland (1) +
  • Kai Striega (4)
  • Søren Fuglede Jørgensen (1)
  • Aleksandr Tagilov (1) +
  • Masayuki Takagi (1) +
  • Sai Teja (1) +
  • Ewout ter Hoeven (2) +
  • Will Tirone (2)
  • Bas van Beek (7)
  • Dhruv Vats (1)
  • H. Vetinari (6)
  • Arthur Volant (1)
  • Samuel Wallan (5)
  • Stefan van der Walt (8)
  • Warren Weckesser (83)
  • Anreas Weh (1)
  • Nils Werner (1)
  • Aviv Yaish (1) +
  • Dowon Yi (1)
  • Rory Yorke (1)
  • Yosshi999 (1) +
  • yuanx749 (2) +
  • Gang Zhao (23)
  • ZhihuiChen0903 (1)
  • Pavel Zun (1) +
  • David Zwicker (1) +

A total of 155 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 4 years ago

scipy - SciPy 1.9.0rc2

SciPy 1.9.0 Release Notes

Note: SciPy 1.9.0 is not released yet!

SciPy 1.9.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.9.x branch, and on adding new features on the main branch.

This release requires Python 3.8+ and NumPy 1.18.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • We have modernized our build system to use meson, substantially reducing our source build times
  • Added scipy.optimize.milp, new function for mixed-integer linear programming.
  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.
  • Tensor-product spline interpolation modes were added to scipy.interpolate.RegularGridInterpolator.
  • A new global optimizer (DIviding RECTangles algorithm) scipy.optimize.direct

New features

scipy.interpolate improvements

  • Speed up the RBFInterpolator evaluation with high dimensional interpolants.
  • Added new spline based interpolation methods for scipy.interpolate.RegularGridInterpolator and its tutorial.
  • scipy.interpolate.RegularGridInterpolator and scipy.interpolate.interpn now accept descending ordered points.
  • RegularGridInterpolator now handles length-1 grid axes.
  • The BivariateSpline subclasses have a new method partial_derivative which constructs a new spline object representing a derivative of an original spline. This mirrors the corresponding functionality for univariate splines, splder and BSpline.derivative, and can substantially speed up repeated evaluation of derivatives.

scipy.linalg improvements

  • scipy.linalg.expm now accepts nD arrays. Its speed is also improved.
  • Minimum required LAPACK version is bumped to 3.7.1.

scipy.fft improvements

  • Added uarray multimethods for scipy.fft.fht and scipy.fft.ifht to allow provision of third party backend implementations such as those recently added to CuPy.

scipy.optimize improvements

  • A new global optimizer, scipy.optimize.direct (DIviding RECTangles algorithm) was added. For problems with inexpensive function evaluations, like the ones in the SciPy benchmark suite, direct is competitive with the best other solvers in SciPy (dual_annealing and differential_evolution) in terms of execution time. See gh-14300 <https://github.com/scipy/scipy/pull/14300>__ for more details.

  • Add a full_output parameter to scipy.optimize.curve_fit to output additional solution information.

  • Add a integrality parameter to scipy.optimize.differential_evolution, enabling integer constraints on parameters.

  • Add a vectorized parameter to call a vectorized objective function only once per iteration. This can improve minimization speed by reducing interpreter overhead from the multiple objective function calls.

  • The default method of scipy.optimize.linprog is now 'highs'.

  • Added scipy.optimize.milp, new function for mixed-integer linear programming.

  • Added Newton-TFQMR method to newton_krylov.

  • Added support for the Bounds class in shgo and dual_annealing for a more uniform API across scipy.optimize.

  • Added the vectorized keyword to differential_evolution.

  • approx_fprime now works with vector-valued functions.

scipy.signal improvements

  • The new window function scipy.signal.windows.kaiser_bessel_derived was added to compute the Kaiser-Bessel derived window.
  • Single-precision hilbert operations are now faster as a result of more consistent dtype handling.

scipy.sparse improvements

  • Add a copy parameter to scipy.sparce.csgraph.laplacian. Using inplace computation with copy=False reduces the memory footprint.
  • Add a dtype parameter to scipy.sparce.csgraph.laplacian for type casting.
  • Add a symmetrized parameter to scipy.sparce.csgraph.laplacian to produce symmetric Laplacian for directed graphs.
  • Add a form parameter to scipy.sparce.csgraph.laplacian taking one of the three values: array, or function, or lo determining the format of the output Laplacian:
    • array is a numpy array (backward compatible default);
    • function is a pointer to a lambda-function evaluating the Laplacian-vector or Laplacian-matrix product;
    • lo results in the format of the LinearOperator.

scipy.sparse.linalg improvements

  • lobpcg performance improvements for small input cases.

scipy.spatial improvements

  • Add an order parameter to scipy.spatial.transform.Rotation.from_quat and scipy.spatial.transform.Rotation.as_quat to specify quaternion format.

scipy.stats improvements

  • scipy.stats.monte_carlo_test performs one-sample Monte Carlo hypothesis tests to assess whether a sample was drawn from a given distribution. Besides reproducing the results of hypothesis tests like scipy.stats.ks_1samp, scipy.stats.normaltest, and scipy.stats.cramervonmises without small sample size limitations, it makes it possible to perform similar tests using arbitrary statistics and distributions.

  • Several scipy.stats functions support new axis (integer or tuple of integers) and nan_policy ('raise', 'omit', or 'propagate'), and keepdims arguments. These functions also support masked arrays as inputs, even if they do not have a scipy.stats.mstats counterpart. Edge cases for multidimensional arrays, such as when axis-slices have no unmasked elements or entire inputs are of size zero, are handled consistently.

  • Add a weight parameter to scipy.stats.hmean.

  • Several improvements have been made to scipy.stats.levy_stable. Substantial improvement has been made for numerical evaluation of the pdf and cdf, resolving #12658 and #14944. The improvement is particularly dramatic for stability parameter alpha close to or equal to 1 and for alpha below but approaching its maximum value of 2. The alternative fast Fourier transform based method for pdf calculation has also been updated to use the approach of Wang and Zhang from their 2008 conference paper Simpson’s rule based FFT method to compute densities of stable distribution, making this method more competitive with the default method. In addition, users now have the option to change the parametrization of the Levy Stable distribution to Nolan's "S0" parametrization which is used internally by SciPy's pdf and cdf implementations. The "S0" parametrization is described in Nolan's paper Numerical calculation of stable densities and distribution functions upon which SciPy's implementation is based. "S0" has the advantage that delta and gamma are proper location and scale parameters. With delta and gamma fixed, the location and scale of the resulting distribution remain unchanged as alpha and beta change. This is not the case for the default "S1" parametrization. Finally, more options have been exposed to allow users to trade off between runtime and accuracy for both the default and FFT methods of pdf and cdf calculation. More information can be found in the documentation here (to be linked).

  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.

  • The methods "pearson" and "tippet" from scipy.stats.combine_pvalues have been fixed to return the correct p-values, resolving #15373. In addition, the documentation for scipy.stats.combine_pvalues has been expanded and improved.

  • Unlike other reduction functions, stats.mode didn't consume the axis being operated on and failed for negative axis inputs. Both the bugs have been fixed. Note that stats.mode will now consume the input axis and return an ndarray with the axis dimension removed.

  • Replaced implementation of scipy.stats.ncf with the implementation from Boost for improved reliability.

  • Add a bits parameter to scipy.stats.qmc.Sobol. It allows to use from 0 to 64 bits to compute the sequence. Default is None which corresponds to 30 for backward compatibility. Using a higher value allow to sample more points. Note: bits does not affect the output dtype.

  • Add a integers method to scipy.stats.qmc.QMCEngine. It allows sampling integers using any QMC sampler.

  • Improved the fit speed and accuracy of stats.pareto.

  • Added qrvs method to NumericalInversePolynomial to match the situation for NumericalInverseHermite.

  • Faster random variate generation for gennorm and nakagami.

  • lloyd_centroidal_voronoi_tessellation has been added to allow improved sample distributions via iterative application of Voronoi diagrams and centering operations

  • Add scipy.stats.qmc.PoissonDisk to sample using the Poisson disk sampling method. It guarantees that samples are separated from each other by a given radius.

  • Add scipy.stats.pmean to calculate the weighted power mean also called generalized mean.

Deprecated features

  • Due to collision with the shape parameter n of several distributions, use of the distribution moment method with keyword argument n is deprecated. Keyword n is replaced with keyword order.
  • Similarly, use of the distribution interval method with keyword arguments alpha is deprecated. Keyword alpha is replaced with keyword confidence.
  • The 'simplex', 'revised simplex', and 'interior-point' methods of scipy.optimize.linprog are deprecated. Methods highs, highs-ds, or highs-ipm should be used in new code.
  • Support for non-numeric arrays has been deprecated from stats.mode. pandas.DataFrame.mode can be used instead.
  • The function spatial.distance.kulsinski has been deprecated in favor of spatial.distance.kulczynski1.
  • The maxiter keyword of the truncated Newton (TNC) algorithm has been deprecated in favour of maxfun.
  • The vertices keyword of Delauney.qhull now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.
  • The extradoc keyword of rv_continuous, rv_discrete and rv_sample now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Object arrays in sparse matrices now raise an error.
  • Inexact indices into sparse matrices now raise an error.
  • Passing radius=None to scipy.spatial.SphericalVoronoi now raises an error (not adding radius defaults to 1, as before).
  • Several BSpline methods now raise an error if inputs have ndim > 1.
  • The _rvs method of statistical distributions now requires a size parameter.
  • Passing a fillvalue that cannot be cast to the output type in scipy.signal.convolve2d now raises an error.
  • scipy.spatial.distance now enforces that the input vectors are one-dimensional.
  • Removed stats.itemfreq.
  • Removed stats.median_absolute_deviation.
  • Removed n_jobs keyword argument and use of k=None from kdtree.query.
  • Removed right keyword from interpolate.PPoly.extend.
  • Removed debug keyword from scipy.linalg.solve_*.
  • Removed class _ppform scipy.interpolate.
  • Removed BSR methods matvec and matmat.
  • Removed mlab truncation mode from cluster.dendrogram.
  • Removed cluster.vq.py_vq2.
  • Removed keyword arguments ftol and xtol from optimize.minimize(method='Nelder-Mead').
  • Removed signal.windows.hanning.
  • Removed LAPACK gegv functions from linalg; this raises the minimally required LAPACK version to 3.7.1.
  • Removed spatial.distance.matching.
  • Removed the alias scipy.random for numpy.random.
  • Removed docstring related functions from scipy.misc (docformat, inherit_docstring_from, extend_notes_in_docstring, replace_notes_in_docstring, indentcount_lines, filldoc, unindent_dict, unindent_string).
  • Removed linalg.pinv2.

Backwards incompatible changes

  • Several scipy.stats functions now convert np.matrix to np.ndarrays before the calculation is performed. In this case, the output will be a scalar or np.ndarray of appropriate shape rather than a 2D np.matrix. Similarly, while masked elements of masked arrays are still ignored, the output will be a scalar or np.ndarray rather than a masked array with mask=False.
  • The default method of scipy.optimize.linprog is now 'highs', not 'interior-point' (which is now deprecated), so callback functions and some options are no longer supported with the default method. With the default method, the x attribute of the returned OptimizeResult is now None (instead of a non-optimal array) when an optimal solution cannot be found (e.g. infeasible problem).
  • For scipy.stats.combine_pvalues, the sign of the test statistic returned for the method "pearson" has been flipped so that higher values of the statistic now correspond to lower p-values, making the statistic more consistent with those of the other methods and with the majority of the literature.
  • scipy.linalg.expm due to historical reasons was using the sparse implementation and thus was accepting sparse arrays. Now it only works with nDarrays. For sparse usage, scipy.sparse.linalg.expm needs to be used explicitly.
  • The definition of scipy.stats.circvar has reverted to the one that is standard in the literature; note that this is not the same as the square of scipy.stats.circstd.
  • Remove inheritance to QMCEngine in MultinomialQMC and MultivariateNormalQMC. It removes the methods fast_forward and reset.
  • Init of MultinomialQMC now require the number of trials with n_trials. Hence, MultinomialQMC.random output has now the correct shape (n, pvals).
  • Several function-specific warnings (F_onewayConstantInputWarning, F_onewayBadInputSizesWarning, PearsonRConstantInputWarning, PearsonRNearConstantInputWarning, SpearmanRConstantInputWarning, and BootstrapDegenerateDistributionWarning) have been replaced with more general warnings.

Other changes

  • A draft developer CLI is available for SciPy, leveraging the doit, click and rich-click tools. For more details, see gh-15959.

  • The SciPy contributor guide has been reorganized and updated (see #15947 for details).

  • QUADPACK Fortran routines in scipy.integrate, which power scipy.integrate.quad, have been marked as recursive. This should fix rare issues in multivariate integration (nquad and friends) and obviate the need for compiler-specific compile flags (/recursive for ifort etc). Please file an issue if this change turns out problematic for you. This is also true for FITPACK routines in scipy.interpolate, which power splrep, splev etc., and *UnivariateSpline and *BivariateSpline classes.

  • the USE_PROPACK environment variable has been renamed to SCIPY_USE_PROPACK; setting to a non-zero value will enable the usage of the PROPACK library as before

Lazy access to subpackages

Before this release, all subpackages of SciPy (cluster, fft, ndimage, etc.) had to be explicitly imported. Now, these subpackages are lazily loaded as soon as they are accessed, so that the following is possible (if desired for interactive use, it's not actually recommended for code, see :ref:scipy-api): import scipy as sp; sp.fft.dct([1, 2, 3]). Advantages include: making it easier to navigate SciPy in interactive terminals, reducing subpackage import conflicts (which before required import networkx.linalg as nla; import scipy.linalg as sla), and avoiding repeatedly having to update imports during teaching & experimentation. Also see the related community specification document.

SciPy switched to Meson as its build system

This is the first release that ships with Meson as the build system. When installing with pip or pypa/build, Meson will be used (invoked via the meson-python build hook). This change brings significant benefits - most importantly much faster build times, but also better support for cross-compilation and cleaner build logs.

Note:

This release still ships with support for numpy.distutils-based builds as well. Those can be invoked through the setup.py command-line interface (e.g., python setup.py install). It is planned to remove numpy.distutils support before the 1.10.0 release.

When building from source, a number of things have changed compared to building with numpy.distutils:

  • New build dependencies: meson, ninja, and pkg-config. setuptools and wheel are no longer needed.
  • BLAS and LAPACK libraries that are supported haven't changed, however the discovery mechanism has: that is now using pkg-config instead of hardcoded paths or a site.cfg file.
  • The build defaults to using OpenBLAS. See :ref:blas-lapack-selection for details.

The two CLIs that can be used to build wheels are pip and build. In addition, the SciPy repo contains a python dev.py CLI for any kind of development task (see its --help for details). For a comparison between old (distutils) and new (meson) build commands, see :ref:meson-faq.

For more information on the introduction of Meson support in SciPy, see gh-13615 <https://github.com/scipy/scipy/issues/13615>__ and this blog post <https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson/>__.

Authors

  • endolith (12)
  • Caio Agiani (2) +
  • Emmy Albert (1) +
  • Joseph Albert (1)
  • Tania Allard (3)
  • Carsten Allefeld (1) +
  • Kartik Anand (1) +
  • Virgile Andreani (2) +
  • Weh Andreas (1) +
  • Francesco Andreuzzi (5) +
  • Kian-Meng Ang (2) +
  • Gerrit Ansmann (1)
  • Ar-Kareem (1) +
  • Shehan Atukorala (1) +
  • avishai231 (1) +
  • Blair Azzopardi (1)
  • Sayantika Banik (2) +
  • Ross Barnowski (9)
  • Christoph Baumgarten (3)
  • Nickolai Belakovski (1)
  • Peter Bell (9)
  • Sebastian Berg (3)
  • Bharath (1) +
  • bobcatCA (2) +
  • boussoffara (2) +
  • Islem BOUZENIA (1) +
  • Jake Bowhay (41) +
  • Matthew Brett (11)
  • Dietrich Brunn (2) +
  • Michael Burkhart (2) +
  • Evgeni Burovski (96)
  • Matthias Bussonnier (20)
  • Dominic C (1)
  • Cameron (1) +
  • CJ Carey (3)
  • Thomas A Caswell (2)
  • Ali Cetin (2) +
  • Hood Chatham (5) +
  • Klesk Chonkin (1)
  • Craig Citro (1) +
  • Dan Cogswell (1) +
  • Luigi Cruz (1) +
  • Anirudh Dagar (5)
  • Brandon David (1)
  • deepakdinesh1123 (1) +
  • Denton DeLoss (1) +
  • derbuihan (2) +
  • Sameer Deshmukh (13) +
  • Niels Doucet (1) +
  • DWesl (8)
  • eytanadler (30) +
  • Thomas J. Fan (5)
  • Isuru Fernando (3)
  • Joseph Fox-Rabinovitz (1)
  • Ryan Gibson (4) +
  • Ralf Gommers (314)
  • Srinivas Gorur-Shandilya (1) +
  • Alex Griffing (2)
  • h-vetinari (3)
  • Matt Haberland (446)
  • Tristan Hearn (1) +
  • Jonathan Helgert (1) +
  • Samuel Hinton (1) +
  • Jake (1) +
  • Stewart Jamieson (1) +
  • Jan-Hendrik Müller (1)
  • Yikun Jiang (1) +
  • JuliaMelle01 (1) +
  • jyuv (12) +
  • Toshiki Kataoka (1)
  • Chris Keefe (1) +
  • Robert Kern (4)
  • Andrew Knyazev (11)
  • Matthias Koeppe (4) +
  • Sergey Koposov (1)
  • Volodymyr Kozachynskyi (1) +
  • Yotaro Kubo (2) +
  • Jacob Lapenna (1) +
  • Peter Mahler Larsen (8)
  • Eric Larson (4)
  • Laurynas Mikšys (1) +
  • Antony Lee (1)
  • Gregory R. Lee (2)
  • lerichi (1) +
  • Tim Leslie (2)
  • P. L. Lim (1)
  • Smit Lunagariya (43)
  • lutefiskhotdish (1) +
  • Cong Ma (12)
  • Syrtis Major (1)
  • Nicholas McKibben (17)
  • Melissa Weber Mendonça (10)
  • Mark Mikofski (1)
  • Jarrod Millman (13)
  • Harsh Mishra (6)
  • ML-Nielsen (3) +
  • Matthew Murray (1) +
  • Andrew Nelson (50)
  • Dimitri Papadopoulos Orfanos (1) +
  • Evgueni Ovtchinnikov (2) +
  • Sambit Panda (1)
  • Nick Papior (2)
  • Tirth Patel (43)
  • Petar Mlinarić (1)
  • petroselo (1) +
  • Ilhan Polat (64)
  • Anthony Polloreno (1)
  • Amit Portnoy (1) +
  • Quentin Barthélemy (9)
  • Patrick N. Raanes (1) +
  • Tyler Reddy (144)
  • Pamphile Roy (197)
  • Vivek Roy (2) +
  • sabonerune (1) +
  • Niyas Sait (2) +
  • Atsushi Sakai (25)
  • Mazen Sayed (1) +
  • Eduardo Schettino (5) +
  • Daniel Schmitz (6) +
  • Eli Schwartz (4) +
  • SELEE (2) +
  • Namami Shanker (4)
  • siddhantwahal (1) +
  • Gagandeep Singh (8)
  • Soph (1) +
  • Shivnaren Srinivasan (1) +
  • Scott Staniewicz (1) +
  • Leo C. Stein (4)
  • Albert Steppi (7)
  • Christopher Strickland (1) +
  • Kai Striega (4)
  • Søren Fuglede Jørgensen (1)
  • Aleksandr Tagilov (1) +
  • Masayuki Takagi (1) +
  • Sai Teja (1) +
  • Ewout ter Hoeven (2) +
  • Will Tirone (2)
  • Bas van Beek (7)
  • Dhruv Vats (1)
  • H. Vetinari (6)
  • Arthur Volant (1)
  • Samuel Wallan (5)
  • Stefan van der Walt (8)
  • Warren Weckesser (83)
  • Anreas Weh (1)
  • Nils Werner (1)
  • Aviv Yaish (1) +
  • Dowon Yi (1)
  • Rory Yorke (1)
  • Yosshi999 (1) +
  • yuanx749 (2) +
  • Gang Zhao (23)
  • ZhihuiChen0903 (1)
  • Pavel Zun (1) +
  • David Zwicker (1) +

A total of 155 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 4 years ago

scipy - SciPy 1.9.0rc1

SciPy 1.9.0 Release Notes

Note: SciPy 1.9.0 is not released yet!

SciPy 1.9.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.9.x branch, and on adding new features on the main branch.

This release requires Python 3.8+ and NumPy 1.18.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • We have modernized our build system to use meson, substantially reducing our source build times
  • Added scipy.optimize.milp, new function for mixed-integer linear programming.
  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.
  • Tensor-product spline interpolation modes were added to scipy.interpolate.RegularGridInterpolator.
  • A new global optimizer (DIviding RECTangles algorithm) scipy.optimize.direct

New features

scipy.interpolate improvements

  • Speed up the RBFInterpolator evaluation with high dimensional interpolants.
  • Added new spline based interpolation methods for scipy.interpolate.RegularGridInterpolator and its tutorial.
  • scipy.interpolate.RegularGridInterpolator and scipy.interpolate.interpn now accept descending ordered points.
  • RegularGridInterpolator now handles length-1 grid axes.
  • The BivariateSpline subclasses have a new method partial_derivative which constructs a new spline object representing a derivative of an original spline. This mirrors the corresponding functionality for univariate splines, splder and BSpline.derivative, and can substantially speed up repeated evaluation of derivatives.

scipy.linalg improvements

  • scipy.linalg.expm now accepts nD arrays. Its speed is also improved.
  • Minimum required LAPACK version is bumped to 3.7.1.

scipy.fft improvements

  • Added uarray multimethods for scipy.fft.fht and scipy.fft.ifht to allow provision of third party backend implementations such as those recently added to CuPy.

scipy.optimize improvements

  • A new global optimizer, scipy.optimize.direct (DIviding RECTangles algorithm) was added. For problems with inexpensive function evaluations, like the ones in the SciPy benchmark suite, direct is competitive with the best other solvers in SciPy (dual_annealing and differential_evolution) in terms of execution time. See gh-14300 <https://github.com/scipy/scipy/pull/14300>__ for more details.

  • Add a full_output parameter to scipy.optimize.curve_fit to output additional solution information.

  • Add a integrality parameter to scipy.optimize.differential_evolution, enabling integer constraints on parameters.

  • Add a vectorized parameter to call a vectorized objective function only once per iteration. This can improve minimization speed by reducing interpreter overhead from the multiple objective function calls.

  • The default method of scipy.optimize.linprog is now 'highs'.

  • Added scipy.optimize.milp, new function for mixed-integer linear programming.

  • Added Newton-TFQMR method to newton_krylov.

  • Added support for the Bounds class in shgo and dual_annealing for a more uniform API across scipy.optimize.

  • Added the vectorized keyword to differential_evolution.

  • approx_fprime now works with vector-valued functions.

scipy.signal improvements

  • The new window function scipy.signal.windows.kaiser_bessel_derived was added to compute the Kaiser-Bessel derived window.
  • Single-precision hilbert operations are now faster as a result of more consistent dtype handling.

scipy.sparse improvements

  • Add a copy parameter to scipy.sparce.csgraph.laplacian. Using inplace computation with copy=False reduces the memory footprint.
  • Add a dtype parameter to scipy.sparce.csgraph.laplacian for type casting.
  • Add a symmetrized parameter to scipy.sparce.csgraph.laplacian to produce symmetric Laplacian for directed graphs.
  • Add a form parameter to scipy.sparce.csgraph.laplacian taking one of the three values: array, or function, or lo determining the format of the output Laplacian:
    • array is a numpy array (backward compatible default);
    • function is a pointer to a lambda-function evaluating the Laplacian-vector or Laplacian-matrix product;
    • lo results in the format of the LinearOperator.

scipy.sparse.linalg improvements

  • lobpcg performance improvements for small input cases.

scipy.spatial improvements

  • Add an order parameter to scipy.spatial.transform.Rotation.from_quat and scipy.spatial.transform.Rotation.as_quat to specify quaternion format.

scipy.stats improvements

  • scipy.stats.monte_carlo_test performs one-sample Monte Carlo hypothesis tests to assess whether a sample was drawn from a given distribution. Besides reproducing the results of hypothesis tests like scipy.stats.ks_1samp, scipy.stats.normaltest, and scipy.stats.cramervonmises without small sample size limitations, it makes it possible to perform similar tests using arbitrary statistics and distributions.

  • Several scipy.stats functions support new axis (integer or tuple of integers) and nan_policy ('raise', 'omit', or 'propagate'), and keepdims arguments. These functions also support masked arrays as inputs, even if they do not have a scipy.stats.mstats counterpart. Edge cases for multidimensional arrays, such as when axis-slices have no unmasked elements or entire inputs are of size zero, are handled consistently.

  • Add a weight parameter to scipy.stats.hmean.

  • Several improvements have been made to scipy.stats.levy_stable. Substantial improvement has been made for numerical evaluation of the pdf and cdf, resolving #12658 and #14944. The improvement is particularly dramatic for stability parameter alpha close to or equal to 1 and for alpha below but approaching its maximum value of 2. The alternative fast Fourier transform based method for pdf calculation has also been updated to use the approach of Wang and Zhang from their 2008 conference paper Simpson’s rule based FFT method to compute densities of stable distribution, making this method more competitive with the default method. In addition, users now have the option to change the parametrization of the Levy Stable distribution to Nolan's "S0" parametrization which is used internally by SciPy's pdf and cdf implementations. The "S0" parametrization is described in Nolan's paper Numerical calculation of stable densities and distribution functions upon which SciPy's implementation is based. "S0" has the advantage that delta and gamma are proper location and scale parameters. With delta and gamma fixed, the location and scale of the resulting distribution remain unchanged as alpha and beta change. This is not the case for the default "S1" parametrization. Finally, more options have been exposed to allow users to trade off between runtime and accuracy for both the default and FFT methods of pdf and cdf calculation. More information can be found in the documentation here (to be linked).

  • Added scipy.stats.fit for fitting discrete and continuous distributions to data.

  • The methods "pearson" and "tippet" from scipy.stats.combine_pvalues have been fixed to return the correct p-values, resolving #15373. In addition, the documentation for scipy.stats.combine_pvalues has been expanded and improved.

  • Unlike other reduction functions, stats.mode didn't consume the axis being operated on and failed for negative axis inputs. Both the bugs have been fixed. Note that stats.mode will now consume the input axis and return an ndarray with the axis dimension removed.

  • Replaced implementation of scipy.stats.ncf with the implementation from Boost for improved reliability.

  • Add a bits parameter to scipy.stats.qmc.Sobol. It allows to use from 0 to 64 bits to compute the sequence. Default is None which corresponds to 30 for backward compatibility. Using a higher value allow to sample more points. Note: bits does not affect the output dtype.

  • Add a integers method to scipy.stats.qmc.QMCEngine. It allows sampling integers using any QMC sampler.

  • Improved the fit speed and accuracy of stats.pareto.

  • Added qrvs method to NumericalInversePolynomial to match the situation for NumericalInverseHermite.

  • Faster random variate generation for gennorm and nakagami.

  • lloyd_centroidal_voronoi_tessellation has been added to allow improved sample distributions via iterative application of Voronoi diagrams and centering operations

  • Add scipy.stats.qmc.PoissonDisk to sample using the Poisson disk sampling method. It guarantees that samples are separated from each other by a given radius.

  • Add scipy.stats.pmean to calculate the weighted power mean also called generalized mean.

Deprecated features

  • Due to collision with the shape parameter n of several distributions, use of the distribution moment method with keyword argument n is deprecated. Keyword n is replaced with keyword order.
  • Similarly, use of the distribution interval method with keyword arguments alpha is deprecated. Keyword alpha is replaced with keyword confidence.
  • The 'simplex', 'revised simplex', and 'interior-point' methods of scipy.optimize.linprog are deprecated. Methods highs, highs-ds, or highs-ipm should be used in new code.
  • Support for non-numeric arrays has been deprecated from stats.mode. pandas.DataFrame.mode can be used instead.
  • The function spatial.distance.kulsinski has been deprecated in favor of spatial.distance.kulczynski1.
  • The maxiter keyword of the truncated Newton (TNC) algorithm has been deprecated in favour of maxfun.
  • The vertices keyword of Delauney.qhull now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.
  • The extradoc keyword of rv_continuous, rv_discrete and rv_sample now raises a DeprecationWarning, after having been deprecated in documentation only for a long time.

Expired Deprecations

There is an ongoing effort to follow through on long-standing deprecations. The following previously deprecated features are affected:

  • Object arrays in sparse matrices now raise an error.
  • Inexact indices into sparse matrices now raise an error.
  • Passing radius=None to scipy.spatial.SphericalVoronoi now raises an error (not adding radius defaults to 1, as before).
  • Several BSpline methods now raise an error if inputs have ndim > 1.
  • The _rvs method of statistical distributions now requires a size parameter.
  • Passing a fillvalue that cannot be cast to the output type in scipy.signal.convolve2d now raises an error.
  • scipy.spatial.distance now enforces that the input vectors are one-dimensional.
  • Removed stats.itemfreq.
  • Removed stats.median_absolute_deviation.
  • Removed n_jobs keyword argument and use of k=None from kdtree.query.
  • Removed right keyword from interpolate.PPoly.extend.
  • Removed debug keyword from scipy.linalg.solve_*.
  • Removed class _ppform scipy.interpolate.
  • Removed BSR methods matvec and matmat.
  • Removed mlab truncation mode from cluster.dendrogram.
  • Removed cluster.vq.py_vq2.
  • Removed keyword arguments ftol and xtol from optimize.minimize(method='Nelder-Mead').
  • Removed signal.windows.hanning.
  • Removed LAPACK gegv functions from linalg; this raises the minimally required LAPACK version to 3.7.1.
  • Removed spatial.distance.matching.
  • Removed the alias scipy.random for numpy.random.
  • Removed docstring related functions from scipy.misc (docformat, inherit_docstring_from, extend_notes_in_docstring, replace_notes_in_docstring, indentcount_lines, filldoc, unindent_dict, unindent_string).
  • Removed linalg.pinv2.

Backwards incompatible changes

  • Several scipy.stats functions now convert np.matrix to np.ndarrays before the calculation is performed. In this case, the output will be a scalar or np.ndarray of appropriate shape rather than a 2D np.matrix. Similarly, while masked elements of masked arrays are still ignored, the output will be a scalar or np.ndarray rather than a masked array with mask=False.
  • The default method of scipy.optimize.linprog is now 'highs', not 'interior-point' (which is now deprecated), so callback functions and some options are no longer supported with the default method.
  • For scipy.stats.combine_pvalues, the sign of the test statistic returned for the method "pearson" has been flipped so that higher values of the statistic now correspond to lower p-values, making the statistic more consistent with those of the other methods and with the majority of the literature.
  • scipy.linalg.expm due to historical reasons was using the sparse implementation and thus was accepting sparse arrays. Now it only works with nDarrays. For sparse usage, scipy.sparse.linalg.expm needs to be used explicitly.
  • The definition of scipy.stats.circvar has reverted to the one that is standard in the literature; note that this is not the same as the square of scipy.stats.circstd.
  • Remove inheritance to QMCEngine in MultinomialQMC and MultivariateNormalQMC. It removes the methods fast_forward and reset.
  • Init of MultinomialQMC now require the number of trials with n_trials. Hence, MultinomialQMC.random output has now the correct shape (n, pvals).
  • Several function-specific warnings (F_onewayConstantInputWarning, F_onewayBadInputSizesWarning, PearsonRConstantInputWarning, PearsonRNearConstantInputWarning, SpearmanRConstantInputWarning, and BootstrapDegenerateDistributionWarning) have been replaced with more general warnings.

Other changes

  • A draft developer CLI is available for SciPy, leveraging the doit, click and rich-click tools. For more details, see gh-15959.

  • The SciPy contributor guide has been reorganized and updated (see #15947 for details).

  • QUADPACK Fortran routines in scipy.integrate, which power scipy.integrate.quad, have been marked as recursive. This should fix rare issues in multivariate integration (nquad and friends) and obviate the need for compiler-specific compile flags (/recursive for ifort etc). Please file an issue if this change turns out problematic for you. This is also true for FITPACK routines in scipy.interpolate, which power splrep, splev etc., and *UnivariateSpline and *BivariateSpline classes.

  • the USE_PROPACK environment variable has been renamed to SCIPY_USE_PROPACK; setting to a non-zero value will enable the usage of the PROPACK library as before

Lazy access to subpackages

Before this release, all subpackages of SciPy (cluster, fft, ndimage, etc.) had to be explicitly imported. Now, these subpackages are lazily loaded as soon as they are accessed, so that the following is possible (if desired for interactive use, it's not actually recommended for code, see :ref:scipy-api): import scipy as sp; sp.fft.dct([1, 2, 3]). Advantages include: making it easier to navigate SciPy in interactive terminals, reducing subpackage import conflicts (which before required import networkx.linalg as nla; import scipy.linalg as sla), and avoiding repeatedly having to update imports during teaching & experimentation. Also see the related community specification document.

SciPy switched to Meson as its build system

This is the first release that ships with Meson as the build system. When installing with pip or pypa/build, Meson will be used (invoked via the meson-python build hook). This change brings significant benefits - most importantly much faster build times, but also better support for cross-compilation and cleaner build logs.

Note:

This release still ships with support for numpy.distutils-based builds as well. Those can be invoked through the setup.py command-line interface (e.g., python setup.py install). It is planned to remove numpy.distutils support before the 1.10.0 release.

When building from source, a number of things have changed compared to building with numpy.distutils:

  • New build dependencies: meson, ninja, and pkg-config. setuptools and wheel are no longer needed.
  • BLAS and LAPACK libraries that are supported haven't changed, however the discovery mechanism has: that is now using pkg-config instead of hardcoded paths or a site.cfg file.
  • The build defaults to using OpenBLAS. See :ref:blas-lapack-selection for details.

The two CLIs that can be used to build wheels are pip and build. In addition, the SciPy repo contains a python dev.py CLI for any kind of development task (see its --help for details). For a comparison between old (distutils) and new (meson) build commands, see :ref:meson-faq.

For more information on the introduction of Meson support in SciPy, see gh-13615 <https://github.com/scipy/scipy/issues/13615>__ and this blog post <https://labs.quansight.org/blog/2021/07/moving-scipy-to-meson/>__.

Authors

  • endolith (12)
  • Caio Agiani (2) +
  • Emmy Albert (1) +
  • Joseph Albert (1)
  • Tania Allard (3)
  • Carsten Allefeld (1) +
  • Kartik Anand (1) +
  • Virgile Andreani (2) +
  • Weh Andreas (1) +
  • Francesco Andreuzzi (5) +
  • Kian-Meng Ang (2) +
  • Gerrit Ansmann (1)
  • Ar-Kareem (1) +
  • Shehan Atukorala (1) +
  • avishai231 (1) +
  • Blair Azzopardi (1)
  • Sayantika Banik (2) +
  • Ross Barnowski (8)
  • Christoph Baumgarten (3)
  • Nickolai Belakovski (1)
  • Peter Bell (9)
  • Sebastian Berg (2)
  • Bharath (1) +
  • bobcatCA (2) +
  • boussoffara (2) +
  • Islem BOUZENIA (1) +
  • Jake Bowhay (41) +
  • Matthew Brett (11)
  • Dietrich Brunn (2) +
  • Michael Burkhart (2) +
  • Evgeni Burovski (96)
  • Matthias Bussonnier (20)
  • Dominic C (1)
  • Cameron (1) +
  • CJ Carey (3)
  • Thomas A Caswell (2)
  • Ali Cetin (2) +
  • Hood Chatham (5) +
  • Klesk Chonkin (1)
  • Craig Citro (1) +
  • Dan Cogswell (1) +
  • Luigi Cruz (1) +
  • Anirudh Dagar (5)
  • Brandon David (1)
  • deepakdinesh1123 (1) +
  • Denton DeLoss (1) +
  • derbuihan (2) +
  • Sameer Deshmukh (13) +
  • Niels Doucet (1) +
  • DWesl (8)
  • eytanadler (30) +
  • Thomas J. Fan (5)
  • Isuru Fernando (3)
  • Joseph Fox-Rabinovitz (1)
  • Ryan Gibson (4) +
  • Ralf Gommers (308)
  • Srinivas Gorur-Shandilya (1) +
  • Alex Griffing (2)
  • h-vetinari (3)
  • Matt Haberland (442)
  • Tristan Hearn (1) +
  • Jonathan Helgert (1) +
  • Samuel Hinton (1) +
  • Jake (1) +
  • Stewart Jamieson (1) +
  • Jan-Hendrik Müller (1)
  • Yikun Jiang (1) +
  • JuliaMelle01 (1) +
  • jyuv (12) +
  • Chris Keefe (1) +
  • Robert Kern (4)
  • Andrew Knyazev (11)
  • Matthias Koeppe (4) +
  • Sergey Koposov (1)
  • Volodymyr Kozachynskyi (1) +
  • Yotaro Kubo (2) +
  • Jacob Lapenna (1) +
  • Peter Mahler Larsen (8)
  • Eric Larson (4)
  • Laurynas Mikšys (1) +
  • Antony Lee (1)
  • Gregory R. Lee (2)
  • lerichi (1) +
  • Tim Leslie (2)
  • P. L. Lim (1)
  • Smit Lunagariya (43)
  • lutefiskhotdish (1) +
  • Cong Ma (12)
  • Syrtis Major (1)
  • Nicholas McKibben (17)
  • Melissa Weber Mendonça (10)
  • Mark Mikofski (1)
  • Jarrod Millman (13)
  • Harsh Mishra (6)
  • ML-Nielsen (3) +
  • Matthew Murray (1) +
  • Andrew Nelson (50)
  • Dimitri Papadopoulos Orfanos (1) +
  • Evgueni Ovtchinnikov (2) +
  • Sambit Panda (1)
  • Nick Papior (2)
  • Tirth Patel (43)
  • Petar Mlinarić (1)
  • petroselo (1) +
  • Ilhan Polat (64)
  • Anthony Polloreno (1)
  • Amit Portnoy (1) +
  • Quentin Barthélemy (9)
  • Patrick N. Raanes (1) +
  • Tyler Reddy (121)
  • Pamphile Roy (196)
  • Vivek Roy (2) +
  • Niyas Sait (2) +
  • Atsushi Sakai (25)
  • Mazen Sayed (1) +
  • Eduardo Schettino (5) +
  • Daniel Schmitz (6) +
  • Eli Schwartz (3) +
  • SELEE (2) +
  • Namami Shanker (4)
  • siddhantwahal (1) +
  • Gagandeep Singh (8)
  • Soph (1) +
  • Shivnaren Srinivasan (1) +
  • Scott Staniewicz (1) +
  • Leo C. Stein (4)
  • Albert Steppi (7)
  • Christopher Strickland (1) +
  • Kai Striega (4)
  • Søren Fuglede Jørgensen (1)
  • Aleksandr Tagilov (1) +
  • Masayuki Takagi (1) +
  • Sai Teja (1) +
  • Ewout ter Hoeven (2) +
  • Will Tirone (2)
  • Bas van Beek (7)
  • Dhruv Vats (1)
  • H. Vetinari (4)
  • Arthur Volant (1)
  • Samuel Wallan (5)
  • Stefan van der Walt (8)
  • Warren Weckesser (83)
  • Anreas Weh (1)
  • Nils Werner (1)
  • Aviv Yaish (1) +
  • Dowon Yi (1)
  • Rory Yorke (1)
  • Yosshi999 (1) +
  • yuanx749 (2) +
  • Gang Zhao (23)
  • ZhihuiChen0903 (1)
  • Pavel Zun (1) +
  • David Zwicker (1) +

A total of 153 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 4 years ago

scipy - SciPy 1.8.1

SciPy 1.8.1 Release Notes

SciPy 1.8.1 is a bug-fix release with no new features compared to 1.8.0. Notably, usage of Pythran has been restored for Windows builds/binaries.

Authors

  • Henry Schreiner
  • Maximilian Nöthe
  • Sebastian Berg (1)
  • Sameer Deshmukh (1) +
  • Niels Doucet (1) +
  • DWesl (4)
  • Isuru Fernando (1)
  • Ralf Gommers (4)
  • Matt Haberland (1)
  • Andrew Nelson (1)
  • Dimitri Papadopoulos Orfanos (1) +
  • Tirth Patel (3)
  • Tyler Reddy (46)
  • Pamphile Roy (7)
  • Niyas Sait (1) +
  • H. Vetinari (2)
  • Warren Weckesser (1)

A total of 17 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 4 years ago

scipy - SciPy 1.8.0

SciPy 1.8.0 Release Notes

SciPy 1.8.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.8.x branch, and on adding new features on the master branch.

This release requires Python 3.8+ and NumPy 1.17.3 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A sparse array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases.
  • The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. It is currently default-off due to potential issues on Windows that we aim to resolve in the next release, but can be optionally enabled at runtime for friendly testing with an environment variable setting of USE_PROPACK=1.
  • A new scipy.stats.sampling submodule that leverages the UNU.RAN C library to sample from arbitrary univariate non-uniform continuous and discrete distributions
  • All namespaces that were private but happened to miss underscores in their names have been deprecated.

New features

scipy.fft improvements

Added an orthogonalize=None parameter to the real transforms in scipy.fft which controls whether the modified definition of DCT/DST is used without changing the overall scaling.

scipy.fft backend registration is now smoother, operating with a single registration call and no longer requiring a context manager.

scipy.integrate improvements

scipy.integrate.quad_vec introduces a new optional keyword-only argument, args. args takes in a tuple of extra arguments if any (default is args=()), which is then internally used to pass into the callable function (needing these extra arguments) which we wish to integrate.

scipy.interpolate improvements

scipy.interpolate.BSpline has a new method, design_matrix, which constructs a design matrix of b-splines in the sparse CSR format.

A new method from_cubic in BSpline class allows to convert a CubicSpline object to BSpline object.

scipy.linalg improvements

scipy.linalg gained three new public array structure investigation functions. scipy.linalg.bandwidth returns information about the bandedness of an array and can be used to test for triangular structure discovery, while scipy.linalg.issymmetric and scipy.linalg.ishermitian test the array for exact and approximate symmetric/Hermitian structure.

scipy.optimize improvements

scipy.optimize.check_grad introduces two new optional keyword only arguments, direction and seed. direction can take values, 'all' (default), in which case all the one hot direction vectors will be used for verifying the input analytical gradient function and 'random', in which case a random direction vector will be used for the same purpose. seed (default is None) can be used for reproducing the return value of check_grad function. It will be used only when direction='random'.

The scipy.optimize.minimize TNC method has been rewritten to use Cython bindings. This also fixes an issue with the callback altering the state of the optimization.

Added optional parameters target_accept_rate and stepwise_factor for adapative step size adjustment in basinhopping.

The epsilon argument to approx_fprime is now optional so that it may have a default value consistent with most other functions in scipy.optimize.

scipy.signal improvements

Add analog argument, default False, to zpk2sos, and add new pairing option 'minimal' to construct analog and minimal discrete SOS arrays. tf2sos uses zpk2sos; add analog argument here as well, and pass it on to zpk2sos.

savgol_coeffs and savgol_filter now work for even window lengths.

Added the Chirp Z-transform and Zoom FFT available as scipy.signal.CZT and scipy.signal.ZoomFFT.

scipy.sparse improvements

An array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases. Please refer to the scipy.sparse docstring for more information.

maximum_flow introduces optional keyword only argument, method which accepts either, 'edmonds-karp' (Edmonds Karp algorithm) or 'dinic' (Dinic's algorithm). Moreover, 'dinic' is used as default value for method which means that Dinic's algorithm is used for computing maximum flow unless specified. See, the comparison between the supported algorithms in this comment <https://github.com/scipy/scipy/pull/14358#issue-684212523>_.

Parameters atol, btol now default to 1e-6 in scipy.sparse.linalg.lsmr to match with default values in scipy.sparse.linalg.lsqr.

Add the Transpose-Free Quasi-Minimal Residual algorithm (TFQMR) for general nonsingular non-Hermitian linear systems in scipy.sparse.linalg.tfqmr.

The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. For some problems, this may be faster and/or more accurate than the default, ARPACK. PROPACK functionality is currently opt-in--you must specify USE_PROPACK=1 at runtime to use it due to potential issues on Windows that we aim to resolve in the next release.

sparse.linalg iterative solvers now have a nonzero initial guess option, which may be specified as x0 = 'Mb'.

The trace method has been added for sparse matrices.

scipy.spatial improvements

scipy.spatial.transform.Rotation now supports item assignment and has a new concatenate method.

Add scipy.spatial.distance.kulczynski1 in favour of scipy.spatial.distance.kulsinski which will be deprecated in the next release.

scipy.spatial.distance.minkowski now also supports 0<p<1.

scipy.special improvements

The new function scipy.special.log_expit computes the logarithm of the logistic sigmoid function. The function is formulated to provide accurate results for large positive and negative inputs, so it avoids the problems that would occur in the naive implementation log(expit(x)).

A suite of five new functions for elliptic integrals: scipy.special.ellipr{c,d,f,g,j}. These are the Carlson symmetric elliptic integrals <https://dlmf.nist.gov/19.16>_, which have computational advantages over the classical Legendre integrals. Previous versions included some elliptic integrals from the Cephes library (scipy.special.ellip{k,km1,kinc,e,einc}) but was missing the integral of third kind (Legendre's Pi), which can be evaluated using the new Carlson functions. The new Carlson elliptic integral functions can be evaluated in the complex plane, whereas the Cephes library's functions are only defined for real inputs.

Several defects in scipy.special.hyp2f1 have been corrected. Approximately correct values are now returned for z near exp(+-i*pi/3), fixing #8054 <https://github.com/scipy/scipy/issues/8054>. Evaluation for such z is now calculated through a series derived by López and Temme (2013) <https://arxiv.org/abs/1306.2046> that converges in these regions. In addition, degenerate cases with one or more of a, b, and/or c a non-positive integer are now handled in a manner consistent with mpmath's hyp2f1 implementation <https://mpmath.org/doc/current/functions/hypergeometric.html>, which fixes #7340 <https://github.com/scipy/scipy/issues/7340>. These fixes were made as part of an effort to rewrite the Fortran 77 implementation of hyp2f1 in Cython piece by piece. This rewriting is now roughly 50% complete.

scipy.stats improvements

scipy.stats.qmc.LatinHypercube introduces two new optional keyword-only arguments, optimization and strength. optimization is either None or random-cd. In the latter, random permutations are performed to improve the centered discrepancy. strength is either 1 or 2. 1 corresponds to the classical LHS while 2 has better sub-projection properties. This construction is referred to as an orthogonal array based LHS of strength 2. In both cases, the output is still a LHS.

scipy.stats.qmc.Halton is faster as the underlying Van der Corput sequence was ported to Cython.

The alternative parameter was added to the kendalltau and somersd functions to allow one-sided hypothesis testing. Similarly, the masked versions of skewtest, kurtosistest, ttest_1samp, ttest_ind, and ttest_rel now also have an alternative parameter.

Add scipy.stats.gzscore to calculate the geometrical z score.

Random variate generators to sample from arbitrary univariate non-uniform continuous and discrete distributions have been added to the new scipy.stats.sampling submodule. Implementations of a C library UNU.RAN <http://statmath.wu.ac.at/software/unuran/>_ are used for performance. The generators added are:

  • TransformedDensityRejection
  • DiscreteAliasUrn
  • NumericalInversePolynomial
  • DiscreteGuideTable
  • SimpleRatioUniforms

The binned_statistic set of functions now have improved performance for the std, min, max, and median statistic calculations.

somersd and _tau_b now have faster Pythran-based implementations.

Some general efficiency improvements to handling of nan values in several stats functions.

Added the Tukey-Kramer test as scipy.stats.tukey_hsd.

Improved performance of scipy.stats.argus rvs method.

Added the parameter keepdims to scipy.stats.variation and prevent the undesirable return of a masked array from the function in some cases.

permutation_test performs an exact or randomized permutation test of a given statistic on provided data.

Deprecated features

Clear split between public and private API

SciPy has always documented what its public API consisted of in :ref:its API reference docs <scipy-api>, however there never was a clear split between public and private namespaces in the code base. In this release, all namespaces that were private but happened to miss underscores in their names have been deprecated. These include (as examples, there are many more):

  • scipy.signal.spline
  • scipy.ndimage.filters
  • scipy.ndimage.fourier
  • scipy.ndimage.measurements
  • scipy.ndimage.morphology
  • scipy.ndimage.interpolation
  • scipy.sparse.linalg.solve
  • scipy.sparse.linalg.eigen
  • scipy.sparse.linalg.isolve

All functions and other objects in these namespaces that were meant to be public are accessible from their respective public namespace (e.g. scipy.signal). The design principle is that any public object must be accessible from a single namespace only; there are a few exceptions, mostly for historical reasons (e.g., stats and stats.distributions overlap). For other libraries aiming to provide a SciPy-compatible API, it is now unambiguous what namespace structure to follow. See gh-14360 <https://github.com/scipy/scipy/issues/14360>_ for more details.

Other deprecations

NumericalInverseHermite has been deprecated from scipy.stats and moved to the scipy.stats.sampling submodule. It now uses the C implementation of the UNU.RAN library so the result of methods like ppf may vary slightly. Parameter tol has been deprecated and renamed to u_resolution. The parameter max_intervals has also been deprecated and will be removed in a future release of SciPy.

Backwards incompatible changes

  • SciPy has raised the minimum compiler versions to GCC 6.3 on linux and VS2019 on windows. In particular, this means that SciPy may now use C99 and C++14 features. For more details see here <https://docs.scipy.org/doc/scipy/reference/dev/toolchain.html>_.
  • The result for empty bins for scipy.stats.binned_statistic with the builtin 'std' metric is now nan, for consistency with np.std.
  • The function scipy.spatial.distance.wminkowski has been removed. To achieve the same results as before, please use the minkowski distance function with the (optional) w= keyword-argument for the given weight.

Other changes

Some Fortran 77 code was modernized to be compatible with NAG's nagfor Fortran compiler (see, e.g., PR 13229 <https://github.com/scipy/scipy/pull/13229>_).

threadpoolctl may now be used by our test suite to substantially improve the efficiency of parallel test suite runs.

Authors

  • @endolith
  • adamadanandy +
  • akeemlh +
  • Anton Akhmerov
  • Marvin Albert +
  • alegresor +
  • Andrew Annex +
  • Pantelis Antonoudiou +
  • Ross Barnowski +
  • Christoph Baumgarten
  • Stephen Becker +
  • Nickolai Belakovski
  • Peter Bell
  • berberto +
  • Georgii Bocharov +
  • Evgeni Burovski
  • Matthias Bussonnier
  • CJ Carey
  • Justin Charlong +
  • Hood Chatham +
  • Dennis Collaris +
  • David Cottrell +
  • cruyffturn +
  • da-woods +
  • Anirudh Dagar
  • Tiger Du +
  • Thomas Duvernay
  • Dani El-Ayyass +
  • Castedo Ellerman +
  • Donnie Erb +
  • Andreas Esders-Kopecky +
  • Livio F +
  • Isuru Fernando
  • Evelyn Fitzgerald +
  • Sara Fridovich-Keil +
  • Mark E Fuller +
  • Ralf Gommers
  • Kevin Richard Green +
  • guiweber +
  • Nitish Gupta +
  • h-vetinari
  • Matt Haberland
  • J. Hariharan +
  • Charles Harris
  • Jonathan Helgert +
  • Trever Hines
  • Nadav Horesh
  • Ian Hunt-Isaak +
  • ich +
  • Itrimel +
  • Jan-Hendrik Müller +
  • Jebby993 +
  • Yikun Jiang +
  • Evan W Jones +
  • Nathaniel Jones +
  • Jeffrey Kelling +
  • Malik Idrees Hasan Khan +
  • Paul Kienzle
  • Sergey B Kirpichev
  • Kadatatlu Kishore +
  • Andrew Knyazev
  • Ravin Kumar +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Tim Leslie
  • lezcano +
  • Xingyu Liu
  • Christian Lorentzen
  • Lorenzo +
  • Smit Lunagariya +
  • Lv101Magikarp +
  • Yair M +
  • Cong Ma
  • Lorenzo Maffioli +
  • majiang +
  • Brian McFee +
  • Nicholas McKibben
  • John Speed Meyers +
  • millivolt9 +
  • Jarrod Millman
  • Harsh Mishra +
  • Boaz Mohar +
  • naelsondouglas +
  • Andrew Nelson
  • Nico Schlömer
  • Thomas Nowotny +
  • nullptr +
  • Teddy Ort +
  • Nick Papior
  • ParticularMiner +
  • Dima Pasechnik
  • Tirth Patel
  • Matti Picus
  • Ilhan Polat
  • Adrian Price-Whelan +
  • Quentin Barthélemy +
  • Sundar R +
  • Judah Rand +
  • Tyler Reddy
  • Renal-Of-Loon +
  • Frederic Renner +
  • Pamphile Roy
  • Bharath Saiguhan +
  • Atsushi Sakai
  • Eric Schanet +
  • Sebastian Wallkötter
  • serge-sans-paille
  • Reshama Shaikh +
  • Namami Shanker
  • siddhantwahal +
  • Walter Simson +
  • Gagandeep Singh +
  • Leo C. Stein +
  • Albert Steppi
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Masayuki Takagi +
  • Mike Taves
  • Ben Thompson +
  • Bas van Beek
  • Jacob Vanderplas
  • Dhruv Vats +
  • H. Vetinari +
  • Thomas Viehmann +
  • Pauli Virtanen
  • Vlad +
  • Arthur Volant
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Haoyin Xu +
  • Rory Yorke
  • Egor Zemlyanoy
  • Gang Zhao +
  • 赵丰 (Zhao Feng) +

A total of 139 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.8.0rc4

SciPy 1.8.0 Release Notes

Note: SciPy 1.8.0 is not released yet!

SciPy 1.8.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.8.x branch, and on adding new features on the master branch.

This release requires Python 3.8+ and NumPy 1.17.3 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A sparse array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases.
  • The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. It is currently default-off due to potential issues on Windows that we aim to resolve in the next release, but can be optionally enabled at runtime for friendly testing with an environment variable setting of USE_PROPACK=1.
  • A new scipy.stats.sampling submodule that leverages the UNU.RAN C library to sample from arbitrary univariate non-uniform continuous and discrete distributions
  • All namespaces that were private but happened to miss underscores in their names have been deprecated.

New features

scipy.fft improvements

Added an orthogonalize=None parameter to the real transforms in scipy.fft which controls whether the modified definition of DCT/DST is used without changing the overall scaling.

scipy.fft backend registration is now smoother, operating with a single registration call and no longer requiring a context manager.

scipy.integrate improvements

scipy.integrate.quad_vec introduces a new optional keyword-only argument, args. args takes in a tuple of extra arguments if any (default is args=()), which is then internally used to pass into the callable function (needing these extra arguments) which we wish to integrate.

scipy.interpolate improvements

scipy.interpolate.BSpline has a new method, design_matrix, which constructs a design matrix of b-splines in the sparse CSR format.

A new method from_cubic in BSpline class allows to convert a CubicSpline object to BSpline object.

scipy.linalg improvements

scipy.linalg gained three new public array structure investigation functions. scipy.linalg.bandwidth returns information about the bandedness of an array and can be used to test for triangular structure discovery, while scipy.linalg.issymmetric and scipy.linalg.ishermitian test the array for exact and approximate symmetric/Hermitian structure.

scipy.optimize improvements

scipy.optimize.check_grad introduces two new optional keyword only arguments, direction and seed. direction can take values, 'all' (default), in which case all the one hot direction vectors will be used for verifying the input analytical gradient function and 'random', in which case a random direction vector will be used for the same purpose. seed (default is None) can be used for reproducing the return value of check_grad function. It will be used only when direction='random'.

The scipy.optimize.minimize TNC method has been rewritten to use Cython bindings. This also fixes an issue with the callback altering the state of the optimization.

Added optional parameters target_accept_rate and stepwise_factor for adapative step size adjustment in basinhopping.

The epsilon argument to approx_fprime is now optional so that it may have a default value consistent with most other functions in scipy.optimize.

scipy.signal improvements

Add analog argument, default False, to zpk2sos, and add new pairing option 'minimal' to construct analog and minimal discrete SOS arrays. tf2sos uses zpk2sos; add analog argument here as well, and pass it on to zpk2sos.

savgol_coeffs and savgol_filter now work for even window lengths.

Added the Chirp Z-transform and Zoom FFT available as scipy.signal.CZT and scipy.signal.ZoomFFT.

scipy.sparse improvements

An array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases. Please refer to the scipy.sparse docstring for more information.

maximum_flow introduces optional keyword only argument, method which accepts either, 'edmonds-karp' (Edmonds Karp algorithm) or 'dinic' (Dinic's algorithm). Moreover, 'dinic' is used as default value for method which means that Dinic's algorithm is used for computing maximum flow unless specified. See, the comparison between the supported algorithms in this comment <https://github.com/scipy/scipy/pull/14358#issue-684212523>_.

Parameters atol, btol now default to 1e-6 in scipy.sparse.linalg.lsmr to match with default values in scipy.sparse.linalg.lsqr.

Add the Transpose-Free Quasi-Minimal Residual algorithm (TFQMR) for general nonsingular non-Hermitian linear systems in scipy.sparse.linalg.tfqmr.

The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. For some problems, this may be faster and/or more accurate than the default, ARPACK. PROPACK functionality is currently opt-in--you must specify USE_PROPACK=1 at runtime to use it due to potential issues on Windows that we aim to resolve in the next release.

sparse.linalg iterative solvers now have a nonzero initial guess option, which may be specified as x0 = 'Mb'.

The trace method has been added for sparse matrices.

scipy.spatial improvements

scipy.spatial.transform.Rotation now supports item assignment and has a new concatenate method.

Add scipy.spatial.distance.kulczynski1 in favour of scipy.spatial.distance.kulsinski which will be deprecated in the next release.

scipy.spatial.distance.minkowski now also supports 0<p<1.

scipy.special improvements

The new function scipy.special.log_expit computes the logarithm of the logistic sigmoid function. The function is formulated to provide accurate results for large positive and negative inputs, so it avoids the problems that would occur in the naive implementation log(expit(x)).

A suite of five new functions for elliptic integrals: scipy.special.ellipr{c,d,f,g,j}. These are the Carlson symmetric elliptic integrals <https://dlmf.nist.gov/19.16>_, which have computational advantages over the classical Legendre integrals. Previous versions included some elliptic integrals from the Cephes library (scipy.special.ellip{k,km1,kinc,e,einc}) but was missing the integral of third kind (Legendre's Pi), which can be evaluated using the new Carlson functions. The new Carlson elliptic integral functions can be evaluated in the complex plane, whereas the Cephes library's functions are only defined for real inputs.

Several defects in scipy.special.hyp2f1 have been corrected. Approximately correct values are now returned for z near exp(+-i*pi/3), fixing #8054 <https://github.com/scipy/scipy/issues/8054>. Evaluation for such z is now calculated through a series derived by López and Temme (2013) <https://arxiv.org/abs/1306.2046> that converges in these regions. In addition, degenerate cases with one or more of a, b, and/or c a non-positive integer are now handled in a manner consistent with mpmath's hyp2f1 implementation <https://mpmath.org/doc/current/functions/hypergeometric.html>, which fixes #7340 <https://github.com/scipy/scipy/issues/7340>. These fixes were made as part of an effort to rewrite the Fortran 77 implementation of hyp2f1 in Cython piece by piece. This rewriting is now roughly 50% complete.

scipy.stats improvements

scipy.stats.qmc.LatinHypercube introduces two new optional keyword-only arguments, optimization and strength. optimization is either None or random-cd. In the latter, random permutations are performed to improve the centered discrepancy. strength is either 1 or 2. 1 corresponds to the classical LHS while 2 has better sub-projection properties. This construction is referred to as an orthogonal array based LHS of strength 2. In both cases, the output is still a LHS.

scipy.stats.qmc.Halton is faster as the underlying Van der Corput sequence was ported to Cython.

The alternative parameter was added to the kendalltau and somersd functions to allow one-sided hypothesis testing. Similarly, the masked versions of skewtest, kurtosistest, ttest_1samp, ttest_ind, and ttest_rel now also have an alternative parameter.

Add scipy.stats.gzscore to calculate the geometrical z score.

Random variate generators to sample from arbitrary univariate non-uniform continuous and discrete distributions have been added to the new scipy.stats.sampling submodule. Implementations of a C library UNU.RAN <http://statmath.wu.ac.at/software/unuran/>_ are used for performance. The generators added are:

  • TransformedDensityRejection
  • DiscreteAliasUrn
  • NumericalInversePolynomial
  • DiscreteGuideTable
  • SimpleRatioUniforms

The binned_statistic set of functions now have improved performance for the std, min, max, and median statistic calculations.

somersd and _tau_b now have faster Pythran-based implementations.

Some general efficiency improvements to handling of nan values in several stats functions.

Added the Tukey-Kramer test as scipy.stats.tukey_hsd.

Improved performance of scipy.stats.argus rvs method.

Added the parameter keepdims to scipy.stats.variation and prevent the undesirable return of a masked array from the function in some cases.

permutation_test performs an exact or randomized permutation test of a given statistic on provided data.

Deprecated features

Clear split between public and private API

SciPy has always documented what its public API consisted of in :ref:its API reference docs <scipy-api>, however there never was a clear split between public and private namespaces in the code base. In this release, all namespaces that were private but happened to miss underscores in their names have been deprecated. These include (as examples, there are many more):

  • scipy.signal.spline
  • scipy.ndimage.filters
  • scipy.ndimage.fourier
  • scipy.ndimage.measurements
  • scipy.ndimage.morphology
  • scipy.ndimage.interpolation
  • scipy.sparse.linalg.solve
  • scipy.sparse.linalg.eigen
  • scipy.sparse.linalg.isolve

All functions and other objects in these namespaces that were meant to be public are accessible from their respective public namespace (e.g. scipy.signal). The design principle is that any public object must be accessible from a single namespace only; there are a few exceptions, mostly for historical reasons (e.g., stats and stats.distributions overlap). For other libraries aiming to provide a SciPy-compatible API, it is now unambiguous what namespace structure to follow. See gh-14360 <https://github.com/scipy/scipy/issues/14360>_ for more details.

Other deprecations

NumericalInverseHermite has been deprecated from scipy.stats and moved to the scipy.stats.sampling submodule. It now uses the C implementation of the UNU.RAN library so the result of methods like ppf may vary slightly. Parameter tol has been deprecated and renamed to u_resolution. The parameter max_intervals has also been deprecated and will be removed in a future release of SciPy.

Backwards incompatible changes

  • SciPy has raised the minimum compiler versions to GCC 6.3 on linux and VS2019 on windows. In particular, this means that SciPy may now use C99 and C++14 features. For more details see here <https://docs.scipy.org/doc/scipy/reference/dev/toolchain.html>_.
  • The result for empty bins for scipy.stats.binned_statistic with the builtin 'std' metric is now nan, for consistency with np.std.
  • The function scipy.spatial.distance.wminkowski has been removed. To achieve the same results as before, please use the minkowski distance function with the (optional) w= keyword-argument for the given weight.

Other changes

Some Fortran 77 code was modernized to be compatible with NAG's nagfor Fortran compiler (see, e.g., PR 13229 <https://github.com/scipy/scipy/pull/13229>_).

threadpoolctl may now be used by our test suite to substantially improve the efficiency of parallel test suite runs.

Authors

  • @endolith
  • adamadanandy +
  • akeemlh +
  • Anton Akhmerov
  • Marvin Albert +
  • alegresor +
  • Andrew Annex +
  • Pantelis Antonoudiou +
  • Ross Barnowski +
  • Christoph Baumgarten
  • Stephen Becker +
  • Nickolai Belakovski
  • Peter Bell
  • berberto +
  • Georgii Bocharov +
  • Evgeni Burovski
  • Matthias Bussonnier
  • CJ Carey
  • Justin Charlong +
  • Hood Chatham +
  • Dennis Collaris +
  • David Cottrell +
  • cruyffturn +
  • da-woods +
  • Anirudh Dagar
  • Tiger Du +
  • Thomas Duvernay
  • Dani El-Ayyass +
  • Castedo Ellerman +
  • Donnie Erb +
  • Andreas Esders-Kopecky +
  • Livio F +
  • Isuru Fernando
  • Evelyn Fitzgerald +
  • Sara Fridovich-Keil +
  • Mark E Fuller +
  • Ralf Gommers
  • Kevin Richard Green +
  • guiweber +
  • Nitish Gupta +
  • h-vetinari
  • Matt Haberland
  • J. Hariharan +
  • Charles Harris
  • Jonathan Helgert +
  • Trever Hines
  • Nadav Horesh
  • Ian Hunt-Isaak +
  • ich +
  • Itrimel +
  • Jan-Hendrik Müller +
  • Jebby993 +
  • Yikun Jiang +
  • Evan W Jones +
  • Nathaniel Jones +
  • Jeffrey Kelling +
  • Malik Idrees Hasan Khan +
  • Paul Kienzle
  • Sergey B Kirpichev
  • Kadatatlu Kishore +
  • Andrew Knyazev
  • Ravin Kumar +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Tim Leslie
  • lezcano +
  • Xingyu Liu
  • Christian Lorentzen
  • Lorenzo +
  • Smit Lunagariya +
  • Lv101Magikarp +
  • Yair M +
  • Cong Ma
  • Lorenzo Maffioli +
  • majiang +
  • Brian McFee +
  • Nicholas McKibben
  • John Speed Meyers +
  • millivolt9 +
  • Jarrod Millman
  • Harsh Mishra +
  • Boaz Mohar +
  • naelsondouglas +
  • Andrew Nelson
  • Nico Schlömer
  • Thomas Nowotny +
  • nullptr +
  • Teddy Ort +
  • Nick Papior
  • ParticularMiner +
  • Dima Pasechnik
  • Tirth Patel
  • Matti Picus
  • Ilhan Polat
  • Adrian Price-Whelan +
  • Quentin Barthélemy +
  • Sundar R +
  • Judah Rand +
  • Tyler Reddy
  • Renal-Of-Loon +
  • Frederic Renner +
  • Pamphile Roy
  • Bharath Saiguhan +
  • Atsushi Sakai
  • Eric Schanet +
  • Sebastian Wallkötter
  • serge-sans-paille
  • Reshama Shaikh +
  • Namami Shanker
  • siddhantwahal +
  • Walter Simson +
  • Gagandeep Singh +
  • Leo C. Stein +
  • Albert Steppi
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Masayuki Takagi +
  • Mike Taves
  • Ben Thompson +
  • Bas van Beek
  • Jacob Vanderplas
  • Dhruv Vats +
  • H. Vetinari +
  • Thomas Viehmann +
  • Pauli Virtanen
  • Vlad +
  • Arthur Volant
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Haoyin Xu +
  • Rory Yorke
  • Egor Zemlyanoy
  • Gang Zhao +
  • 赵丰 (Zhao Feng) +

A total of 139 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.8.0rc3

SciPy 1.8.0 Release Notes

Note: SciPy 1.8.0 is not released yet!

SciPy 1.8.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.8.x branch, and on adding new features on the master branch.

This release requires Python 3.8+ and NumPy 1.17.3 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A sparse array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases.
  • The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. It is currently default-off due to potential issues on Windows that we aim to resolve in the next release, but can be optionally enabled at runtime for friendly testing with an environment variable setting of USE_PROPACK=1.
  • A new scipy.stats.sampling submodule that leverages the UNU.RAN C library to sample from arbitrary univariate non-uniform continuous and discrete distributions
  • All namespaces that were private but happened to miss underscores in their names have been deprecated.

New features

scipy.fft improvements

Added an orthogonalize=None parameter to the real transforms in scipy.fft which controls whether the modified definition of DCT/DST is used without changing the overall scaling.

scipy.fft backend registration is now smoother, operating with a single registration call and no longer requiring a context manager.

scipy.integrate improvements

scipy.integrate.quad_vec introduces a new optional keyword-only argument, args. args takes in a tuple of extra arguments if any (default is args=()), which is then internally used to pass into the callable function (needing these extra arguments) which we wish to integrate.

scipy.interpolate improvements

scipy.interpolate.BSpline has a new method, design_matrix, which constructs a design matrix of b-splines in the sparse CSR format.

A new method from_cubic in BSpline class allows to convert a CubicSpline object to BSpline object.

scipy.linalg improvements

scipy.linalg gained three new public array structure investigation functions. scipy.linalg.bandwidth returns information about the bandedness of an array and can be used to test for triangular structure discovery, while scipy.linalg.issymmetric and scipy.linalg.ishermitian test the array for exact and approximate symmetric/Hermitian structure.

scipy.optimize improvements

scipy.optimize.check_grad introduces two new optional keyword only arguments, direction and seed. direction can take values, 'all' (default), in which case all the one hot direction vectors will be used for verifying the input analytical gradient function and 'random', in which case a random direction vector will be used for the same purpose. seed (default is None) can be used for reproducing the return value of check_grad function. It will be used only when direction='random'.

The scipy.optimize.minimize TNC method has been rewritten to use Cython bindings. This also fixes an issue with the callback altering the state of the optimization.

Added optional parameters target_accept_rate and stepwise_factor for adapative step size adjustment in basinhopping.

The epsilon argument to approx_fprime is now optional so that it may have a default value consistent with most other functions in scipy.optimize.

scipy.signal improvements

Add analog argument, default False, to zpk2sos, and add new pairing option 'minimal' to construct analog and minimal discrete SOS arrays. tf2sos uses zpk2sos; add analog argument here as well, and pass it on to zpk2sos.

savgol_coeffs and savgol_filter now work for even window lengths.

Added the Chirp Z-transform and Zoom FFT available as scipy.signal.CZT and scipy.signal.ZoomFFT.

scipy.sparse improvements

An array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases. Please refer to the scipy.sparse docstring for more information.

maximum_flow introduces optional keyword only argument, method which accepts either, 'edmonds-karp' (Edmonds Karp algorithm) or 'dinic' (Dinic's algorithm). Moreover, 'dinic' is used as default value for method which means that Dinic's algorithm is used for computing maximum flow unless specified. See, the comparison between the supported algorithms in this comment.

Parameters atol, btol now default to 1e-6 in scipy.sparse.linalg.lsmr to match with default values in scipy.sparse.linalg.lsqr.

Add the Transpose-Free Quasi-Minimal Residual algorithm (TFQMR) for general nonsingular non-Hermitian linear systems in scipy.sparse.linalg.tfqmr.

The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. For some problems, this may be faster and/or more accurate than the default, ARPACK. PROPACK functionality is currently opt-in--you must specify USE_PROPACK=1 at runtime to use it due to potential issues on Windows that we aim to resolve in the next release.

sparse.linalg iterative solvers now have a nonzero initial guess option, which may be specified as x0 = 'Mb'.

The trace method has been added for sparse matrices.

scipy.spatial improvements

scipy.spatial.transform.Rotation now supports item assignment and has a new concatenate method.

Add scipy.spatial.distance.kulczynski1 in favour of scipy.spatial.distance.kulsinski which will be deprecated in the next release.

scipy.spatial.distance.minkowski now also supports 0<p<1.

scipy.special improvements

The new function scipy.special.log_expit computes the logarithm of the logistic sigmoid function. The function is formulated to provide accurate results for large positive and negative inputs, so it avoids the problems that would occur in the naive implementation log(expit(x)).

A suite of five new functions for elliptic integrals: scipy.special.ellipr{c,d,f,g,j}. These are the Carlson symmetric elliptic integrals <https://dlmf.nist.gov/19.16>_, which have computational advantages over the classical Legendre integrals. Previous versions included some elliptic integrals from the Cephes library (scipy.special.ellip{k,km1,kinc,e,einc}) but was missing the integral of third kind (Legendre's Pi), which can be evaluated using the new Carlson functions. The new Carlson elliptic integral functions can be evaluated in the complex plane, whereas the Cephes library's functions are only defined for real inputs.

Several defects in scipy.special.hyp2f1 have been corrected. Approximately correct values are now returned for z near exp(+-i*pi/3), fixing #8054 <https://github.com/scipy/scipy/issues/8054>. Evaluation for such z is now calculated through a series derived by López and Temme (2013) <https://arxiv.org/abs/1306.2046> that converges in these regions. In addition, degenerate cases with one or more of a, b, and/or c a non-positive integer are now handled in a manner consistent with mpmath's hyp2f1 implementation <https://mpmath.org/doc/current/functions/hypergeometric.html>, which fixes #7340 <https://github.com/scipy/scipy/issues/7340>. These fixes were made as part of an effort to rewrite the Fortran 77 implementation of hyp2f1 in Cython piece by piece. This rewriting is now roughly 50% complete.

scipy.stats improvements

scipy.stats.qmc.LatinHypercube introduces two new optional keyword-only arguments, optimization and strength. optimization is either None or random-cd. In the latter, random permutations are performed to improve the centered discrepancy. strength is either 1 or 2. 1 corresponds to the classical LHS while 2 has better sub-projection properties. This construction is referred to as an orthogonal array based LHS of strength 2. In both cases, the output is still a LHS.

scipy.stats.qmc.Halton is faster as the underlying Van der Corput sequence was ported to Cython.

The alternative parameter was added to the kendalltau and somersd functions to allow one-sided hypothesis testing. Similarly, the masked versions of skewtest, kurtosistest, ttest_1samp, ttest_ind, and ttest_rel now also have an alternative parameter.

Add scipy.stats.gzscore to calculate the geometrical z score.

Random variate generators to sample from arbitrary univariate non-uniform continuous and discrete distributions have been added to the new scipy.stats.sampling submodule. Implementations of a C library UNU.RAN <http://statmath.wu.ac.at/software/unuran/>_ are used for performance. The generators added are:

  • TransformedDensityRejection
  • DiscreteAliasUrn
  • NumericalInversePolynomial
  • DiscreteGuideTable
  • SimpleRatioUniforms

The binned_statistic set of functions now have improved performance for the std, min, max, and median statistic calculations.

somersd and _tau_b now have faster Pythran-based implementations.

Some general efficiency improvements to handling of nan values in several stats functions.

Added the Tukey-Kramer test as scipy.stats.tukey_hsd.

Improved performance of scipy.stats.argus rvs method.

Added the parameter keepdims to scipy.stats.variation and prevent the undesirable return of a masked array from the function in some cases.

permutation_test performs an exact or randomized permutation test of a given statistic on provided data.

Deprecated features

Clear split between public and private API

SciPy has always documented what its public API consisted of in :ref:its API reference docs <scipy-api>, however there never was a clear split between public and private namespaces in the code base. In this release, all namespaces that were private but happened to miss underscores in their names have been deprecated. These include (as examples, there are many more):

  • scipy.signal.spline
  • scipy.ndimage.filters
  • scipy.ndimage.fourier
  • scipy.ndimage.measurements
  • scipy.ndimage.morphology
  • scipy.ndimage.interpolation
  • scipy.sparse.linalg.solve
  • scipy.sparse.linalg.eigen
  • scipy.sparse.linalg.isolve

All functions and other objects in these namespaces that were meant to be public are accessible from their respective public namespace (e.g. scipy.signal). The design principle is that any public object must be accessible from a single namespace only; there are a few exceptions, mostly for historical reasons (e.g., stats and stats.distributions overlap). For other libraries aiming to provide a SciPy-compatible API, it is now unambiguous what namespace structure to follow. See gh-14360 <https://github.com/scipy/scipy/issues/14360>_ for more details.

Other deprecations

NumericalInverseHermite has been deprecated from scipy.stats and moved to the scipy.stats.sampling submodule. It now uses the C implementation of the UNU.RAN library so the result of methods like ppf may vary slightly. Parameter tol has been deprecated and renamed to u_resolution. The parameter max_intervals has also been deprecated and will be removed in a future release of SciPy.

Backwards incompatible changes

  • SciPy has raised the minimum compiler versions to GCC 6.3 on linux and VS2019 on windows. In particular, this means that SciPy may now use C99 and C++14 features. For more details see here <https://docs.scipy.org/doc/scipy/reference/dev/toolchain.html>_.
  • The result for empty bins for scipy.stats.binned_statistic with the builtin 'std' metric is now nan, for consistency with np.std.
  • The function scipy.spatial.distance.wminkowski has been removed. To achieve the same results as before, please use the minkowski distance function with the (optional) w= keyword-argument for the given weight.

Other changes

Some Fortran 77 code was modernized to be compatible with NAG's nagfor Fortran compiler (see, e.g., PR 13229 <https://github.com/scipy/scipy/pull/13229>_).

threadpoolctl may now be used by our test suite to substantially improve the efficiency of parallel test suite runs.

Authors

  • @endolith
  • adamadanandy +
  • akeemlh +
  • Anton Akhmerov
  • Marvin Albert +
  • alegresor +
  • Andrew Annex +
  • Pantelis Antonoudiou +
  • Ross Barnowski +
  • Christoph Baumgarten
  • Stephen Becker +
  • Nickolai Belakovski
  • Peter Bell
  • berberto +
  • Georgii Bocharov +
  • Evgeni Burovski
  • Matthias Bussonnier
  • CJ Carey
  • Justin Charlong +
  • Hood Chatham +
  • Dennis Collaris +
  • David Cottrell +
  • cruyffturn +
  • da-woods +
  • Anirudh Dagar
  • Tiger Du +
  • Thomas Duvernay
  • Dani El-Ayyass +
  • Castedo Ellerman +
  • Donnie Erb +
  • Andreas Esders-Kopecky +
  • Livio F +
  • Isuru Fernando
  • Evelyn Fitzgerald +
  • Sara Fridovich-Keil +
  • Mark E Fuller +
  • Ralf Gommers
  • Kevin Richard Green +
  • guiweber +
  • Nitish Gupta +
  • h-vetinari
  • Matt Haberland
  • J. Hariharan +
  • Charles Harris
  • Jonathan Helgert +
  • Trever Hines
  • Nadav Horesh
  • Ian Hunt-Isaak +
  • ich +
  • Itrimel +
  • Jan-Hendrik Müller +
  • Jebby993 +
  • Yikun Jiang +
  • Evan W Jones +
  • Nathaniel Jones +
  • Jeffrey Kelling +
  • Malik Idrees Hasan Khan +
  • Paul Kienzle
  • Sergey B Kirpichev
  • Kadatatlu Kishore +
  • Andrew Knyazev
  • Ravin Kumar +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Tim Leslie
  • lezcano +
  • Xingyu Liu
  • Christian Lorentzen
  • Lorenzo +
  • Smit Lunagariya +
  • Lv101Magikarp +
  • Yair M +
  • Cong Ma
  • Lorenzo Maffioli +
  • majiang +
  • Brian McFee +
  • Nicholas McKibben
  • John Speed Meyers +
  • millivolt9 +
  • Jarrod Millman
  • Harsh Mishra +
  • Boaz Mohar +
  • naelsondouglas +
  • Andrew Nelson
  • Nico Schlömer
  • Thomas Nowotny +
  • nullptr +
  • Teddy Ort +
  • Nick Papior
  • ParticularMiner +
  • Dima Pasechnik
  • Tirth Patel
  • Matti Picus
  • Ilhan Polat
  • Adrian Price-Whelan +
  • Quentin Barthélemy +
  • Sundar R +
  • Judah Rand +
  • Tyler Reddy
  • Renal-Of-Loon +
  • Frederic Renner +
  • Pamphile Roy
  • Bharath Saiguhan +
  • Atsushi Sakai
  • Eric Schanet +
  • Sebastian Wallkötter
  • serge-sans-paille
  • Reshama Shaikh +
  • Namami Shanker
  • siddhantwahal +
  • Walter Simson +
  • Gagandeep Singh +
  • Leo C. Stein +
  • Albert Steppi
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Masayuki Takagi +
  • Mike Taves
  • Ben Thompson +
  • Bas van Beek
  • Jacob Vanderplas
  • Dhruv Vats +
  • H. Vetinari +
  • Thomas Viehmann +
  • Pauli Virtanen
  • Vlad +
  • Arthur Volant
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Haoyin Xu +
  • Rory Yorke
  • Egor Zemlyanoy
  • Gang Zhao +
  • 赵丰 (Zhao Feng) +

A total of 139 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.8.0rc2

SciPy 1.8.0 Release Notes

Note: SciPy 1.8.0 is not released yet!

SciPy 1.8.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.8.x branch, and on adding new features on the master branch.

This release requires Python 3.8+ and NumPy 1.17.3 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A sparse array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases.
  • The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'.
  • A new scipy.stats.sampling submodule that leverages the UNU.RAN C library to sample from arbitrary univariate non-uniform continuous and discrete distributions
  • All namespaces that were private but happened to miss underscores in their names have been deprecated.

New features

scipy.fft improvements

Added an orthogonalize=None parameter to the real transforms in scipy.fft which controls whether the modified definition of DCT/DST is used without changing the overall scaling.

scipy.fft backend registration is now smoother, operating with a single registration call and no longer requiring a context manager.

scipy.integrate improvements

scipy.integrate.quad_vec introduces a new optional keyword-only argument, args. args takes in a tuple of extra arguments if any (default is args=()), which is then internally used to pass into the callable function (needing these extra arguments) which we wish to integrate.

scipy.interpolate improvements

scipy.interpolate.BSpline has a new method, design_matrix, which constructs a design matrix of b-splines in the sparse CSR format.

A new method from_cubic in BSpline class allows to convert a CubicSpline object to BSpline object.

scipy.linalg improvements

scipy.linalg gained three new public array structure investigation functions. scipy.linalg.bandwidth returns information about the bandedness of an array and can be used to test for triangular structure discovery, while scipy.linalg.issymmetric and scipy.linalg.ishermitian test the array for exact and approximate symmetric/Hermitian structure.

scipy.optimize improvements

scipy.optimize.check_grad introduces two new optional keyword only arguments, direction and seed. direction can take values, 'all' (default), in which case all the one hot direction vectors will be used for verifying the input analytical gradient function and 'random', in which case a random direction vector will be used for the same purpose. seed (default is None) can be used for reproducing the return value of check_grad function. It will be used only when direction='random'.

The scipy.optimize.minimize TNC method has been rewritten to use Cython bindings. This also fixes an issue with the callback altering the state of the optimization.

Added optional parameters target_accept_rate and stepwise_factor for adapative step size adjustment in basinhopping.

The epsilon argument to approx_fprime is now optional so that it may have a default value consistent with most other functions in scipy.optimize.

scipy.signal improvements

Add analog argument, default False, to zpk2sos, and add new pairing option 'minimal' to construct analog and minimal discrete SOS arrays. tf2sos uses zpk2sos; add analog argument here as well, and pass it on to zpk2sos.

savgol_coeffs and savgol_filter now work for even window lengths.

Added the Chirp Z-transform and Zoom FFT available as scipy.signal.CZT and scipy.signal.ZoomFFT.

scipy.sparse improvements

An array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases. Please refer to the scipy.sparse docstring for more information.

maximum_flow introduces optional keyword only argument, method which accepts either, 'edmonds-karp' (Edmonds Karp algorithm) or 'dinic' (Dinic's algorithm). Moreover, 'dinic' is used as default value for method which means that Dinic's algorithm is used for computing maximum flow unless specified. See, the comparison between the supported algorithms in this comment <https://github.com/scipy/scipy/pull/14358#issue-684212523>_.

Parameters atol, btol now default to 1e-6 in scipy.sparse.linalg.lsmr to match with default values in scipy.sparse.linalg.lsqr.

Add the Transpose-Free Quasi-Minimal Residual algorithm (TFQMR) for general nonsingular non-Hermitian linear systems in scipy.sparse.linalg.tfqmr.

The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. For some problems, this may be faster and/or more accurate than the default, ARPACK.

sparse.linalg iterative solvers now have a nonzero initial guess option, which may be specified as x0 = 'Mb'.

The trace method has been added for sparse matrices.

scipy.spatial improvements

scipy.spatial.transform.Rotation now supports item assignment and has a new concatenate method.

Add scipy.spatial.distance.kulczynski1 in favour of scipy.spatial.distance.kulsinski which will be deprecated in the next release.

scipy.spatial.distance.minkowski now also supports 0<p<1.

scipy.special improvements

The new function scipy.special.log_expit computes the logarithm of the logistic sigmoid function. The function is formulated to provide accurate results for large positive and negative inputs, so it avoids the problems that would occur in the naive implementation log(expit(x)).

A suite of five new functions for elliptic integrals: scipy.special.ellipr{c,d,f,g,j}. These are the Carlson symmetric elliptic integrals <https://dlmf.nist.gov/19.16>_, which have computational advantages over the classical Legendre integrals. Previous versions included some elliptic integrals from the Cephes library (scipy.special.ellip{k,km1,kinc,e,einc}) but was missing the integral of third kind (Legendre's Pi), which can be evaluated using the new Carlson functions. The new Carlson elliptic integral functions can be evaluated in the complex plane, whereas the Cephes library's functions are only defined for real inputs.

Several defects in scipy.special.hyp2f1 have been corrected. Approximately correct values are now returned for z near exp(+-i*pi/3), fixing #8054 <https://github.com/scipy/scipy/issues/8054>. Evaluation for such z is now calculated through a series derived by López and Temme (2013) <https://arxiv.org/abs/1306.2046> that converges in these regions. In addition, degenerate cases with one or more of a, b, and/or c a non-positive integer are now handled in a manner consistent with mpmath's hyp2f1 implementation <https://mpmath.org/doc/current/functions/hypergeometric.html>, which fixes #7340 <https://github.com/scipy/scipy/issues/7340>. These fixes were made as part of an effort to rewrite the Fortran 77 implementation of hyp2f1 in Cython piece by piece. This rewriting is now roughly 50% complete.

scipy.stats improvements

scipy.stats.qmc.LatinHypercube introduces two new optional keyword-only arguments, optimization and strength. optimization is either None or random-cd. In the latter, random permutations are performed to improve the centered discrepancy. strength is either 1 or 2. 1 corresponds to the classical LHS while 2 has better sub-projection properties. This construction is referred to as an orthogonal array based LHS of strength 2. In both cases, the output is still a LHS.

scipy.stats.qmc.Halton is faster as the underlying Van der Corput sequence was ported to Cython.

The alternative parameter was added to the kendalltau and somersd functions to allow one-sided hypothesis testing. Similarly, the masked versions of skewtest, kurtosistest, ttest_1samp, ttest_ind, and ttest_rel now also have an alternative parameter.

Add scipy.stats.gzscore to calculate the geometrical z score.

Random variate generators to sample from arbitrary univariate non-uniform continuous and discrete distributions have been added to the new scipy.stats.sampling submodule. Implementations of a C library UNU.RAN <http://statmath.wu.ac.at/software/unuran/>_ are used for performance. The generators added are:

  • TransformedDensityRejection
  • DiscreteAliasUrn
  • NumericalInversePolynomial
  • DiscreteGuideTable
  • SimpleRatioUniforms

The binned_statistic set of functions now have improved performance for the std, min, max, and median statistic calculations.

somersd and _tau_b now have faster Pythran-based implementations.

Some general efficiency improvements to handling of nan values in several stats functions.

Added the Tukey-Kramer test as scipy.stats.tukey_hsd.

Improved performance of scipy.stats.argus rvs method.

Added the parameter keepdims to scipy.stats.variation and prevent the undesirable return of a masked array from the function in some cases.

permutation_test performs an exact or randomized permutation test of a given statistic on provided data.

Deprecated features

Clear split between public and private API

SciPy has always documented what its public API consisted of in :ref:its API reference docs <scipy-api>, however there never was a clear split between public and private namespaces in the code base. In this release, all namespaces that were private but happened to miss underscores in their names have been deprecated. These include (as examples, there are many more):

  • scipy.signal.spline
  • scipy.ndimage.filters
  • scipy.ndimage.fourier
  • scipy.ndimage.measurements
  • scipy.ndimage.morphology
  • scipy.ndimage.interpolation
  • scipy.sparse.linalg.solve
  • scipy.sparse.linalg.eigen
  • scipy.sparse.linalg.isolve

All functions and other objects in these namespaces that were meant to be public are accessible from their respective public namespace (e.g. scipy.signal). The design principle is that any public object must be accessible from a single namespace only; there are a few exceptions, mostly for historical reasons (e.g., stats and stats.distributions overlap). For other libraries aiming to provide a SciPy-compatible API, it is now unambiguous what namespace structure to follow. See gh-14360 <https://github.com/scipy/scipy/issues/14360>_ for more details.

Other deprecations

NumericalInverseHermite has been deprecated from scipy.stats and moved to the scipy.stats.sampling submodule. It now uses the C implementation of the UNU.RAN library so the result of methods like ppf may vary slightly. Parameter tol has been deprecated and renamed to u_resolution. The parameter max_intervals has also been deprecated and will be removed in a future release of SciPy.

Backwards incompatible changes

  • SciPy has raised the minimum compiler versions to GCC 6.3 on linux and VS2019 on windows. In particular, this means that SciPy may now use C99 and C++14 features. For more details see here <https://docs.scipy.org/doc/scipy/reference/dev/toolchain.html>_.
  • The result for empty bins for scipy.stats.binned_statistic with the builtin 'std' metric is now nan, for consistency with np.std.
  • The function scipy.spatial.distance.wminkowski has been removed. To achieve the same results as before, please use the minkowski distance function with the (optional) w= keyword-argument for the given weight.

Other changes

Some Fortran 77 code was modernized to be compatible with NAG's nagfor Fortran compiler (see, e.g., PR 13229 <https://github.com/scipy/scipy/pull/13229>_).

threadpoolctl may now be used by our test suite to substantially improve the efficiency of parallel test suite runs.

Authors

  • @endolith
  • adamadanandy +
  • akeemlh +
  • Anton Akhmerov
  • Marvin Albert +
  • alegresor +
  • Andrew Annex +
  • Pantelis Antonoudiou +
  • Ross Barnowski +
  • Christoph Baumgarten
  • Stephen Becker +
  • Nickolai Belakovski
  • Peter Bell
  • berberto +
  • Georgii Bocharov +
  • Evgeni Burovski
  • Matthias Bussonnier
  • CJ Carey
  • Justin Charlong +
  • Dennis Collaris +
  • David Cottrell +
  • cruyffturn +
  • da-woods +
  • Anirudh Dagar
  • Tiger Du +
  • Thomas Duvernay
  • Dani El-Ayyass +
  • Castedo Ellerman +
  • Donnie Erb +
  • Andreas Esders-Kopecky +
  • Livio F +
  • Isuru Fernando
  • Evelyn Fitzgerald +
  • Sara Fridovich-Keil +
  • Mark E Fuller +
  • Ralf Gommers
  • Kevin Richard Green +
  • guiweber +
  • Nitish Gupta +
  • h-vetinari
  • Matt Haberland
  • J. Hariharan +
  • Charles Harris
  • Trever Hines
  • Ian Hunt-Isaak +
  • ich +
  • Itrimel +
  • Jan-Hendrik Müller +
  • Jebby993 +
  • Evan W Jones +
  • Nathaniel Jones +
  • Jeffrey Kelling +
  • Malik Idrees Hasan Khan +
  • Sergey B Kirpichev
  • Kadatatlu Kishore +
  • Andrew Knyazev
  • Ravin Kumar +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Tim Leslie
  • lezcano +
  • Xingyu Liu
  • Christian Lorentzen
  • Lorenzo +
  • Smit Lunagariya +
  • Lv101Magikarp +
  • Yair M +
  • Cong Ma
  • Lorenzo Maffioli +
  • majiang +
  • Brian McFee +
  • Nicholas McKibben
  • John Speed Meyers +
  • millivolt9 +
  • Jarrod Millman
  • Harsh Mishra +
  • Boaz Mohar +
  • naelsondouglas +
  • Andrew Nelson
  • Nico Schlömer
  • Thomas Nowotny +
  • nullptr +
  • Teddy Ort +
  • Nick Papior
  • ParticularMiner +
  • Dima Pasechnik
  • Tirth Patel
  • Matti Picus
  • Ilhan Polat
  • Adrian Price-Whelan +
  • Quentin Barthélemy +
  • Sundar R +
  • Judah Rand +
  • Tyler Reddy
  • Renal-Of-Loon +
  • Frederic Renner +
  • Pamphile Roy
  • Bharath Saiguhan +
  • Atsushi Sakai
  • Eric Schanet +
  • Sebastian Wallkötter
  • serge-sans-paille
  • Reshama Shaikh +
  • Namami Shanker
  • Walter Simson +
  • Gagandeep Singh +
  • Leo C. Stein +
  • Albert Steppi
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Masayuki Takagi +
  • Mike Taves
  • Ben Thompson +
  • Bas van Beek
  • Jacob Vanderplas
  • Dhruv Vats +
  • H. Vetinari +
  • Thomas Viehmann +
  • Pauli Virtanen
  • Vlad +
  • Arthur Volant
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Haoyin Xu +
  • Rory Yorke
  • Egor Zemlyanoy
  • Gang Zhao +
  • 赵丰 (Zhao Feng) +

A total of 133 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.8.0rc1

SciPy 1.8.0 Release Notes

Note: SciPy 1.8.0 is not released yet!

SciPy 1.8.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.8.x branch, and on adding new features on the master branch.

This release requires Python 3.8+ and NumPy 1.17.3 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A sparse array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases.
  • The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'.
  • A new scipy.stats.sampling submodule that leverages the UNU.RAN C library to sample from arbitrary univariate non-uniform continuous and discrete distributions
  • All namespaces that were private but happened to miss underscores in their names have been deprecated.

New features

scipy.fft improvements

Added an orthogonalize=None parameter to the real transforms in scipy.fft which controls whether the modified definition of DCT/DST is used without changing the overall scaling.

scipy.fft backend registration is now smoother, operating with a single registration call and no longer requiring a context manager.

scipy.integrate improvements

scipy.integrate.quad_vec introduces a new optional keyword-only argument, args. args takes in a tuple of extra arguments if any (default is args=()), which is then internally used to pass into the callable function (needing these extra arguments) which we wish to integrate.

scipy.interpolate improvements

scipy.interpolate.BSpline has a new method, design_matrix, which constructs a design matrix of b-splines in the sparse CSR format.

A new method from_cubic in BSpline class allows to convert a CubicSpline object to BSpline object.

scipy.linalg improvements

scipy.linalg gained three new public array structure investigation functions. scipy.linalg.bandwidth returns information about the bandedness of an array and can be used to test for triangular structure discovery, while scipy.linalg.issymmetric and scipy.linalg.ishermitian test the array for exact and approximate symmetric/Hermitian structure.

scipy.optimize improvements

scipy.optimize.check_grad introduces two new optional keyword only arguments, direction and seed. direction can take values, 'all' (default), in which case all the one hot direction vectors will be used for verifying the input analytical gradient function and 'random', in which case a random direction vector will be used for the same purpose. seed (default is None) can be used for reproducing the return value of check_grad function. It will be used only when direction='random'.

The scipy.optimize.minimize TNC method has been rewritten to use Cython bindings. This also fixes an issue with the callback altering the state of the optimization.

Added optional parameters target_accept_rate and stepwise_factor for adapative step size adjustment in basinhopping.

The epsilon argument to approx_fprime is now optional so that it may have a default value consistent with most other functions in scipy.optimize.

scipy.signal improvements

Add analog argument, default False, to zpk2sos, and add new pairing option 'minimal' to construct analog and minimal discrete SOS arrays. tf2sos uses zpk2sos; add analog argument here as well, and pass it on to zpk2sos.

savgol_coeffs and savgol_filter now work for even window lengths.

Added the Chirp Z-transform and Zoom FFT available as scipy.signal.CZT and scipy.signal.ZoomFFT.

scipy.sparse improvements

An array API has been added for early testing and feedback; this work is ongoing, and users should expect minor API refinements over the next few releases. Please refer to the scipy.sparse docstring for more information.

maximum_flow introduces optional keyword only argument, method which accepts either, 'edmonds-karp' (Edmonds Karp algorithm) or 'dinic' (Dinic's algorithm). Moreover, 'dinic' is used as default value for method which means that Dinic's algorithm is used for computing maximum flow unless specified. See, the comparison between the supported algorithms in this comment <https://github.com/scipy/scipy/pull/14358#issue-684212523>_.

Parameters atol, btol now default to 1e-6 in scipy.sparse.linalg.lsmr to match with default values in scipy.sparse.linalg.lsqr.

Add the Transpose-Free Quasi-Minimal Residual algorithm (TFQMR) for general nonsingular non-Hermitian linear systems in scipy.sparse.linalg.tfqmr.

The sparse SVD library PROPACK is now vendored with SciPy, and an interface is exposed via scipy.sparse.svds with solver='PROPACK'. For some problems, this may be faster and/or more accurate than the default, ARPACK.

sparse.linalg iterative solvers now have a nonzero initial guess option, which may be specified as x0 = 'Mb'.

The trace method has been added for sparse matrices.

scipy.spatial improvements

scipy.spatial.transform.Rotation now supports item assignment and has a new concatenate method.

Add scipy.spatial.distance.kulczynski1 in favour of scipy.spatial.distance.kulsinski which will be deprecated in the next release.

scipy.spatial.distance.minkowski now also supports 0<p<1.

scipy.special improvements

The new function scipy.special.log_expit computes the logarithm of the logistic sigmoid function. The function is formulated to provide accurate results for large positive and negative inputs, so it avoids the problems that would occur in the naive implementation log(expit(x)).

A suite of five new functions for elliptic integrals: scipy.special.ellipr{c,d,f,g,j}. These are the Carlson symmetric elliptic integrals <https://dlmf.nist.gov/19.16>_, which have computational advantages over the classical Legendre integrals. Previous versions included some elliptic integrals from the Cephes library (scipy.special.ellip{k,km1,kinc,e,einc}) but was missing the integral of third kind (Legendre's Pi), which can be evaluated using the new Carlson functions. The new Carlson elliptic integral functions can be evaluated in the complex plane, whereas the Cephes library's functions are only defined for real inputs.

Several defects in scipy.special.hyp2f1 have been corrected. Approximately correct values are now returned for z near exp(+-i*pi/3), fixing #8054 <https://github.com/scipy/scipy/issues/8054>. Evaluation for such z is now calculated through a series derived by López and Temme (2013) <https://arxiv.org/abs/1306.2046> that converges in these regions. In addition, degenerate cases with one or more of a, b, and/or c a non-positive integer are now handled in a manner consistent with mpmath's hyp2f1 implementation <https://mpmath.org/doc/current/functions/hypergeometric.html>, which fixes #7340 <https://github.com/scipy/scipy/issues/7340>. These fixes were made as part of an effort to rewrite the Fortran 77 implementation of hyp2f1 in Cython piece by piece. This rewriting is now roughly 50% complete.

scipy.stats improvements

scipy.stats.qmc.LatinHypercube introduces two new optional keyword-only arguments, optimization and strength. optimization is either None or random-cd. In the latter, random permutations are performed to improve the centered discrepancy. strength is either 1 or 2. 1 corresponds to the classical LHS while 2 has better sub-projection properties. This construction is referred to as an orthogonal array based LHS of strength 2. In both cases, the output is still a LHS.

scipy.stats.qmc.Halton is faster as the underlying Van der Corput sequence was ported to Cython.

The alternative parameter was added to the kendalltau and somersd functions to allow one-sided hypothesis testing. Similarly, the masked versions of skewtest, kurtosistest, ttest_1samp, ttest_ind, and ttest_rel now also have an alternative parameter.

Add scipy.stats.gzscore to calculate the geometrical z score.

Random variate generators to sample from arbitrary univariate non-uniform continuous and discrete distributions have been added to the new scipy.stats.sampling submodule. Implementations of a C library UNU.RAN <http://statmath.wu.ac.at/software/unuran/>_ are used for performance. The generators added are:

  • TransformedDensityRejection
  • DiscreteAliasUrn
  • NumericalInversePolynomial
  • DiscreteGuideTable
  • SimpleRatioUniforms

The binned_statistic set of functions now have improved performance for the std, min, max, and median statistic calculations.

somersd and _tau_b now have faster Pythran-based implementations.

Some general efficiency improvements to handling of nan values in several stats functions.

Added the Tukey-Kramer test as scipy.stats.tukey_hsd.

Improved performance of scipy.stats.argus rvs method.

Added the parameter keepdims to scipy.stats.variation and prevent the undesirable return of a masked array from the function in some cases.

permutation_test performs an exact or randomized permutation test of a given statistic on provided data.

Deprecated features

Clear split between public and private API

SciPy has always documented what its public API consisted of in :ref:its API reference docs <scipy-api>, however there never was a clear split between public and private namespaces in the code base. In this release, all namespaces that were private but happened to miss underscores in their names have been deprecated. These include (as examples, there are many more):

  • scipy.signal.spline
  • scipy.ndimage.filters
  • scipy.ndimage.fourier
  • scipy.ndimage.measurements
  • scipy.ndimage.morphology
  • scipy.ndimage.interpolation
  • scipy.sparse.linalg.solve
  • scipy.sparse.linalg.eigen
  • scipy.sparse.linalg.isolve

All functions and other objects in these namespaces that were meant to be public are accessible from their respective public namespace (e.g. scipy.signal). The design principle is that any public object must be accessible from a single namespace only; there are a few exceptions, mostly for historical reasons (e.g., stats and stats.distributions overlap). For other libraries aiming to provide a SciPy-compatible API, it is now unambiguous what namespace structure to follow. See gh-14360 <https://github.com/scipy/scipy/issues/14360>_ for more details.

Other deprecations

NumericalInverseHermite has been deprecated from scipy.stats and moved to the scipy.stats.sampling submodule. It now uses the C implementation of the UNU.RAN library so the result of methods like ppf may vary slightly. Parameter tol has been deprecated and renamed to u_resolution. The parameter max_intervals has also been deprecated and will be removed in a future release of SciPy.

Backwards incompatible changes

  • SciPy has raised the minimum compiler versions to GCC 6.3 on linux and VS2019 on windows. In particular, this means that SciPy may now use C99 and C++14 features. For more details see here <https://docs.scipy.org/doc/scipy/reference/dev/toolchain.html>_.
  • The result for empty bins for scipy.stats.binned_statistic with the builtin 'std' metric is now nan, for consistency with np.std.
  • The function scipy.spatial.distance.wminkowski has been removed. To achieve the same results as before, please use the minkowski distance function with the (optional) w= keyword-argument for the given weight.

Other changes

Some Fortran 77 code was modernized to be compatible with NAG's nagfor Fortran compiler (see, e.g., PR 13229 <https://github.com/scipy/scipy/pull/13229>_).

threadpoolctl may now be used by our test suite to substantially improve the efficiency of parallel test suite runs.

Authors

  • @endolith
  • adamadanandy +
  • akeemlh +
  • Anton Akhmerov
  • Marvin Albert +
  • alegresor +
  • Andrew Annex +
  • Pantelis Antonoudiou +
  • Ross Barnowski +
  • Christoph Baumgarten
  • Stephen Becker +
  • Nickolai Belakovski
  • Peter Bell
  • berberto +
  • Georgii Bocharov +
  • Evgeni Burovski
  • Matthias Bussonnier
  • CJ Carey
  • Justin Charlong +
  • Dennis Collaris +
  • David Cottrell +
  • cruyffturn +
  • da-woods +
  • Anirudh Dagar
  • Tiger Du +
  • Thomas Duvernay
  • Dani El-Ayyass +
  • Castedo Ellerman +
  • Donnie Erb +
  • Andreas Esders-Kopecky +
  • Livio F +
  • Isuru Fernando
  • Evelyn Fitzgerald +
  • Sara Fridovich-Keil +
  • Mark E Fuller +
  • Ralf Gommers
  • Kevin Richard Green +
  • guiweber +
  • Nitish Gupta +
  • h-vetinari
  • Matt Haberland
  • J. Hariharan +
  • Charles Harris
  • Trever Hines
  • Ian Hunt-Isaak +
  • ich +
  • Itrimel +
  • Jan-Hendrik Müller +
  • Jebby993 +
  • Evan W Jones +
  • Nathaniel Jones +
  • Jeffrey Kelling +
  • Malik Idrees Hasan Khan +
  • Sergey B Kirpichev
  • Kadatatlu Kishore +
  • Andrew Knyazev
  • Ravin Kumar +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Tim Leslie
  • lezcano +
  • Xingyu Liu
  • Christian Lorentzen
  • Lorenzo +
  • Smit Lunagariya +
  • Lv101Magikarp +
  • Yair M +
  • Cong Ma
  • Lorenzo Maffioli +
  • majiang +
  • Brian McFee +
  • Nicholas McKibben
  • John Speed Meyers +
  • millivolt9 +
  • Jarrod Millman
  • Harsh Mishra +
  • Boaz Mohar +
  • naelsondouglas +
  • Andrew Nelson
  • Nico Schlömer
  • Thomas Nowotny +
  • nullptr +
  • Teddy Ort +
  • Nick Papior
  • ParticularMiner +
  • Dima Pasechnik
  • Tirth Patel
  • Matti Picus
  • Ilhan Polat
  • Adrian Price-Whelan +
  • Quentin Barthélemy +
  • Sundar R +
  • Judah Rand +
  • Tyler Reddy
  • Renal-Of-Loon +
  • Frederic Renner +
  • Pamphile Roy
  • Bharath Saiguhan +
  • Atsushi Sakai
  • Eric Schanet +
  • Sebastian Wallkötter
  • serge-sans-paille
  • Reshama Shaikh +
  • Namami Shanker
  • Walter Simson +
  • Gagandeep Singh +
  • Leo C. Stein +
  • Albert Steppi
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Mike Taves
  • Ben Thompson +
  • Bas van Beek
  • Jacob Vanderplas
  • Dhruv Vats +
  • H. Vetinari +
  • Thomas Viehmann +
  • Pauli Virtanen
  • Vlad +
  • Arthur Volant
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Haoyin Xu +
  • Rory Yorke
  • Egor Zemlyanoy
  • Gang Zhao +
  • 赵丰 (Zhao Feng) +

A total of 132 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.7.3

SciPy 1.7.3 Release Notes

SciPy 1.7.3 is a bug-fix release that provides binary wheels for MacOS arm64 with Python 3.8, 3.9, and 3.10. The MacOS arm64 wheels are only available for MacOS version 12.0 and greater, as explained in Issue 14688.

Authors

  • Anirudh Dagar
  • Ralf Gommers
  • Tyler Reddy
  • Pamphile Roy
  • Olivier Grisel
  • Isuru Fernando

A total of 6 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.7.2

SciPy 1.7.2 Release Notes

SciPy 1.7.2 is a bug-fix release with no new features compared to 1.7.1. Notably, the release includes wheels for Python 3.10, and wheels are now built with a newer version of OpenBLAS, 0.3.17. Python 3.10 wheels are provided for MacOS x86_64 (thin, not universal2 or arm64 at this time), and Windows/Linux 64-bit. Many wheels are now built with newer versions of manylinux, which may require newer versions of pip.

Authors

  • Peter Bell
  • da-woods +
  • Isuru Fernando
  • Ralf Gommers
  • Matt Haberland
  • Nicholas McKibben
  • Ilhan Polat
  • Judah Rand +
  • Tyler Reddy
  • Pamphile Roy
  • Charles Harris
  • Matti Picus
  • Hugo van Kemenade
  • Jacob Vanderplas

A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 4 years ago

scipy - SciPy 1.7.1

SciPy 1.7.1 Release Notes

SciPy 1.7.1 is a bug-fix release with no new features compared to 1.7.0.

Authors

  • Peter Bell
  • Evgeni Burovski
  • Justin Charlong +
  • Ralf Gommers
  • Matti Picus
  • Tyler Reddy
  • Pamphile Roy
  • Sebastian Wallkötter
  • Arthur Volant

A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 5 years ago

scipy - SciPy 1.7.0

SciPy 1.7.0 Release Notes

SciPy 1.7.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.7.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new submodule for quasi-Monte Carlo, scipy.stats.qmc, was added
  • The documentation design was updated to use the same PyData-Sphinx theme as NumPy and other ecosystem libraries.
  • We now vendor and leverage the Boost C++ library to enable numerous improvements for long-standing weaknesses in scipy.stats
  • scipy.stats has six new distributions, eight new (or overhauled) hypothesis tests, a new function for bootstrapping, a class that enables fast random variate sampling and percentile point function evaluation, and many other enhancements.
  • cdist and pdist distance calculations are faster for several metrics, especially weighted cases, thanks to a rewrite to a new C++ backend framework
  • A new class for radial basis function interpolation, RBFInterpolator, was added to address issues with the Rbf class.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of the improvements to scipy.stats.

New features

scipy.cluster improvements

An optional argument, seed, has been added to kmeans and kmeans2 to set the random generator and random state.

scipy.interpolate improvements

Improved input validation and error messages for fitpack.bispev and fitpack.parder for scenarios that previously caused substantial confusion for users.

The class RBFInterpolator was added to supersede the Rbf class. The new class has usage that more closely follows other interpolator classes, corrects sign errors that caused unexpected smoothing behavior, includes polynomial terms in the interpolant (which are necessary for some RBF choices), and supports interpolation using only the k-nearest neighbors for memory efficiency.

scipy.linalg improvements

An LAPACK wrapper was added for access to the tgexc subroutine.

scipy.ndimage improvements

scipy.ndimage.affine_transform is now able to infer the output_shape from the out array.

scipy.optimize improvements

The optional parameter bounds was added to _minimize_neldermead to support bounds constraints for the Nelder-Mead solver.

trustregion methods trust-krylov, dogleg and trust-ncg can now estimate hess by finite difference using one of ["2-point", "3-point", "cs"].

halton was added as a sampling_method in scipy.optimize.shgo. sobol was fixed and is now using scipy.stats.qmc.Sobol.

halton and sobol were added as init methods in scipy.optimize.differential_evolution.

differential_evolution now accepts an x0 parameter to provide an initial guess for the minimization.

least_squares has a modest performance improvement when SciPy is built with Pythran transpiler enabled.

When linprog is used with method 'highs', 'highs-ipm', or 'highs-ds', the result object now reports the marginals (AKA shadow prices, dual values) and residuals associated with each constraint.

scipy.signal improvements

get_window supports general_cosine and general_hamming window functions.

scipy.signal.medfilt2d now releases the GIL where appropriate to enable performance gains via multithreaded calculations.

scipy.sparse improvements

Addition of dia_matrix sparse matrices is now faster.

scipy.spatial improvements

distance.cdist and distance.pdist performance has greatly improved for certain weighted metrics. Namely: minkowski, euclidean, chebyshev, canberra, and cityblock.

Modest performance improvements for many of the unweighted cdist and pdist metrics noted above.

The parameter seed was added to scipy.spatial.vq.kmeans and scipy.spatial.vq.kmeans2.

The parameters axis and keepdims where added to scipy.spatial.distance.jensenshannon.

The rotation methods from_rotvec and as_rotvec now accept a degrees argument to specify usage of degrees instead of radians.

scipy.special improvements

Wright's generalized Bessel function for positive arguments was added as scipy.special.wright_bessel.

An implementation of the inverse of the Log CDF of the Normal Distribution is now available via scipy.special.ndtri_exp.

scipy.stats improvements

Hypothesis Tests

The Mann-Whitney-Wilcoxon test, mannwhitneyu, has been rewritten. It now supports n-dimensional input, an exact test method when there are no ties, and improved documentation. Please see "Other changes" for adjustments to default behavior.

The new function scipy.stats.binomtest replaces scipy.stats.binom_test. The new function returns an object that calculates a confidence intervals of the proportion parameter. Also, performance was improved from O(n) to O(log(n)) by using binary search.

The two-sample version of the Cramer-von Mises test is implemented in scipy.stats.cramervonmises_2samp.

The Alexander-Govern test is implemented in the new function scipy.stats.alexandergovern.

The new functions scipy.stats.barnard_exact and scipy.stats. boschloo_exact respectively perform Barnard's exact test and Boschloo's exact test for 2x2 contingency tables.

The new function scipy.stats.page_trend_test performs Page's test for ordered alternatives.

The new function scipy.stats.somersd performs Somers' D test for ordinal association between two variables.

An option, permutations, has been added in scipy.stats.ttest_ind to perform permutation t-tests. A trim option was also added to perform a trimmed (Yuen's) t-test.

The alternative parameter was added to the skewtest, kurtosistest, ranksums, mood, ansari, linregress, and spearmanr functions to allow one-sided hypothesis testing.

Sample statistics

The new function scipy.stats.differential_entropy estimates the differential entropy of a continuous distribution from a sample.

The boxcox and boxcox_normmax now allow the user to control the optimizer used to minimize the negative log-likelihood function.

A new function scipy.stats.contingency.relative_risk calculates the relative risk, or risk ratio, of a 2x2 contingency table. The object returned has a method to compute the confidence interval of the relative risk.

Performance improvements in the skew and kurtosis functions achieved by removal of repeated/redundant calculations.

Substantial performance improvements in scipy.stats.mstats.hdquantiles_sd.

The new function scipy.stats.contingency.association computes several measures of association for a contingency table: Pearsons contingency coefficient, Cramer's V, and Tschuprow's T.

The parameter nan_policy was added to scipy.stats.zmap to provide options for handling the occurrence of nan in the input data.

The parameter ddof was added to scipy.stats.variation and scipy.stats.mstats.variation.

The parameter weights was added to scipy.stats.gmean.

Statistical Distributions

We now vendor and leverage the Boost C++ library to address a number of previously reported issues in stats. Notably, beta, binom, nbinom now have Boost backends, and it is straightforward to leverage the backend for additional functions.

The skew Cauchy probability distribution has been implemented as scipy.stats.skewcauchy.

The Zipfian probability distribution has been implemented as scipy.stats.zipfian.

The new distributions nchypergeom_fisher and nchypergeom_wallenius implement the Fisher and Wallenius versions of the noncentral hypergeometric distribution, respectively.

The generalized hyperbolic distribution was added in scipy.stats.genhyperbolic.

The studentized range distribution was added in scipy.stats.studentized_range.

scipy.stats.argus now has improved handling for small parameter values.

Better argument handling/preparation has resulted in performance improvements for many distributions.

The cosine distribution has added ufuncs for ppf, cdf, sf, and isf methods including numerical precision improvements at the edges of the support of the distribution.

An option to fit the distribution to data by the method of moments has been added to the fit method of the univariate continuous distributions.

Other

scipy.stats.bootstrap has been added to allow estimation of the confidence interval and standard error of a statistic.

The new function scipy.stats.contingency.crosstab computes a contingency table (i.e. a table of counts of unique entries) for the given data.

scipy.stats.NumericalInverseHermite enables fast random variate sampling and percentile point function evaluation of an arbitrary univariate statistical distribution.

New scipy.stats.qmc module

This new module provides Quasi-Monte Carlo (QMC) generators and associated helper functions.

It provides a generic class scipy.stats.qmc.QMCEngine which defines a QMC engine/sampler. An engine is state aware: it can be continued, advanced and reset. 3 base samplers are available:

  • scipy.stats.qmc.Sobol the well known Sobol low discrepancy sequence. Several warnings have been added to guide the user into properly using this sampler. The sequence is scrambled by default.
  • scipy.stats.qmc.Halton: Halton low discrepancy sequence. The sequence is scrambled by default.
  • scipy.stats.qmc.LatinHypercube: plain LHS design.

And 2 special samplers are available:

  • scipy.stats.qmc.MultinomialQMC: sampling from a multinomial distribution using any of the base scipy.stats.qmc.QMCEngine.
  • scipy.stats.qmc.MultivariateNormalQMC: sampling from a multivariate Normal using any of the base scipy.stats.qmc.QMCEngine.

The module also provide the following helpers:

  • scipy.stats.qmc.discrepancy: assess the quality of a set of points in terms of space coverage.
  • scipy.stats.qmc.update_discrepancy: can be used in an optimization loop to construct a good set of points.
  • scipy.stats.qmc.scale: easily scale a set of points from (to) the unit interval to (from) a given range.

Deprecated features

scipy.linalg deprecations

  • scipy.linalg.pinv2 is deprecated and its functionality is completely subsumed into scipy.linalg.pinv
  • Both rcond, cond keywords of scipy.linalg.pinv and scipy.linalg.pinvh were not working and now are deprecated. They are now replaced with functioning atol and rtol keywords with clear usage.

scipy.spatial deprecations

  • scipy.spatial.distance metrics expect 1d input vectors but will call np.squeeze on their inputs to accept any extra length-1 dimensions. That behaviour is now deprecated.

Other changes

We now accept and leverage performance improvements from the ahead-of-time Python-to-C++ transpiler, Pythran, which can be optionally disabled (via export SCIPY_USE_PYTHRAN=0) but is enabled by default at build time.

There are two changes to the default behavior of scipy.stats.mannwhitenyu:

  • For years, use of the default alternative=None was deprecated; explicit alternative specification was required. Use of the new default value of alternative, "two-sided", is now permitted.
  • Previously, all p-values were based on an asymptotic approximation. Now, for small samples without ties, the p-values returned are exact by default.

Support has been added for PEP 621 (project metadata in pyproject.toml)

We now support a Gitpod environment to reduce the barrier to entry for SciPy development; for more details see :ref:quickstart-gitpod.

Authors

  • @endolith
  • Jelle Aalbers +
  • Adam +
  • Tania Allard +
  • Sven Baars +
  • Max Balandat +
  • baumgarc +
  • Christoph Baumgarten
  • Peter Bell
  • Lilian Besson
  • Robinson Besson +
  • Max Bolingbroke
  • Blair Bonnett +
  • Jordão Bragantini
  • Harm Buisman +
  • Evgeni Burovski
  • Matthias Bussonnier
  • Dominic C
  • CJ Carey
  • Ramón Casero +
  • Chachay +
  • charlotte12l +
  • Benjamin Curtice Corbett +
  • Falcon Dai +
  • Ian Dall +
  • Terry Davis
  • droussea2001 +
  • DWesl +
  • dwight200 +
  • Thomas J. Fan +
  • Joseph Fox-Rabinovitz
  • Max Frei +
  • Laura Gutierrez Funderburk +
  • gbonomib +
  • Matthias Geier +
  • Pradipta Ghosh +
  • Ralf Gommers
  • Evan H +
  • h-vetinari
  • Matt Haberland
  • Anselm Hahn +
  • Alex Henrie
  • Piet Hessenius +
  • Trever Hines +
  • Elisha Hollander +
  • Stephan Hoyer
  • Tom Hu +
  • Kei Ishikawa +
  • Julien Jerphanion
  • Robert Kern
  • Shashank KS +
  • Peter Mahler Larsen
  • Eric Larson
  • Cheng H. Lee +
  • Gregory R. Lee
  • Jean-Benoist Leger +
  • lgfunderburk +
  • liam-o-marsh +
  • Xingyu Liu +
  • Alex Loftus +
  • Christian Lorentzen +
  • Cong Ma
  • Marc +
  • MarkPundurs +
  • Markus Löning +
  • Liam Marsh +
  • Nicholas McKibben
  • melissawm +
  • Jamie Morton
  • Andrew Nelson
  • Nikola Forró
  • Tor Nordam +
  • Olivier Gauthé +
  • Rohit Pandey +
  • Avanindra Kumar Pandeya +
  • Tirth Patel
  • paugier +
  • Alex H. Wagner, PhD +
  • Jeff Plourde +
  • Ilhan Polat
  • pranavrajpal +
  • Vladyslav Rachek
  • Bharat Raghunathan
  • Recursing +
  • Tyler Reddy
  • Lucas Roberts
  • Gregor Robinson +
  • Pamphile Roy +
  • Atsushi Sakai
  • Benjamin Santos
  • Martin K. Scherer +
  • Thomas Schmelzer +
  • Daniel Scott +
  • Sebastian Wallkötter +
  • serge-sans-paille +
  • Namami Shanker +
  • Masashi Shibata +
  • Alexandre de Siqueira +
  • Albert Steppi +
  • Adam J. Stewart +
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Mike Taves
  • Dan Temkin +
  • Nicolas Tessore +
  • tsubota20 +
  • Robert Uhl
  • christos val +
  • Bas van Beek +
  • Ashutosh Varma +
  • Jose Vazquez +
  • Sebastiano Vigna
  • Aditya Vijaykumar
  • VNMabus
  • Arthur Volant +
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Anreas Weh
  • Josh Wilson
  • Rory Yorke
  • Egor Zemlyanoy
  • Marc Zoeller +
  • zoj613 +
  • 秋纫 +

A total of 126 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 5 years ago

scipy - SciPy 1.7.0rc2

SciPy 1.7.0 Release Notes

Note: Scipy 1.7.0 is not released yet!

SciPy 1.7.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.7.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new submodule for quasi-Monte Carlo, scipy.stats.qmc, was added
  • The documentation design was updated to use the same PyData-Sphinx theme as other NumFOCUS packages like NumPy.
  • We now vendor and leverage the Boost C++ library to enable numerous improvements for long-standing weaknesses in scipy.stats
  • scipy.stats has six new distributions, eight new (or overhauled) hypothesis tests, a new function for bootstrapping, a class that enables fast random variate sampling and percentile point function evaluation, and many other enhancements.
  • cdist and pdist distance calculations are faster for several metrics, especially weighted cases, thanks to a rewrite to a new C++ backend framework
  • A new class for radial basis function interpolation, RBFInterpolator, was added to address issues with the Rbf class.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of the improvements to scipy.stats.

New features

scipy.cluster improvements

An optional argument, seed, has been added to kmeans and kmeans2 to set the random generator and random state.

scipy.interpolate improvements

Improved input validation and error messages for fitpack.bispev and fitpack.parder for scenarios that previously caused substantial confusion for users.

The class RBFInterpolator was added to supersede the Rbf class. The new class has usage that more closely follows other interpolator classes, corrects sign errors that caused unexpected smoothing behavior, includes polynomial terms in the interpolant (which are necessary for some RBF choices), and supports interpolation using only the k-nearest neighbors for memory efficiency.

scipy.linalg improvements

An LAPACK wrapper was added for access to the tgexc subroutine.

scipy.ndimage improvements

scipy.ndimage.affine_transform is now able to infer the output_shape from the out array.

scipy.optimize improvements

The optional parameter bounds was added to _minimize_neldermead to support bounds constraints for the Nelder-Mead solver.

trustregion methods trust-krylov, dogleg and trust-ncg can now estimate hess by finite difference using one of ["2-point", "3-point", "cs"].

halton was added as a sampling_method in scipy.optimize.shgo. sobol was fixed and is now using scipy.stats.qmc.Sobol.

halton and sobol were added as init methods in scipy.optimize.differential_evolution.

differential_evolution now accepts an x0 parameter to provide an initial guess for the minimization.

least_squares has a modest performance improvement when SciPy is built with Pythran transpiler enabled.

When linprog is used with method 'highs', 'highs-ipm', or 'highs-ds', the result object now reports the marginals (AKA shadow prices, dual values) and residuals associated with each constraint.

scipy.signal improvements

get_window supports general_cosine and general_hamming window functions.

scipy.signal.medfilt2d now releases the GIL where appropriate to enable performance gains via multithreaded calculations.

scipy.sparse improvements

Addition of dia_matrix sparse matrices is now faster.

scipy.spatial improvements

distance.cdist and distance.pdist performance has greatly improved for certain weighted metrics. Namely: minkowski, euclidean, chebyshev, canberra, and cityblock.

Modest performance improvements for many of the unweighted cdist and pdist metrics noted above.

The parameter seed was added to scipy.spatial.vq.kmeans and scipy.spatial.vq.kmeans2.

The parameters axis and keepdims where added to scipy.spatial.distance.jensenshannon.

The rotation methods from_rotvec and as_rotvec now accept a degrees argument to specify usage of degrees instead of radians.

scipy.special improvements

Wright's generalized Bessel function for positive arguments was added as scipy.special.wright_bessel.

An implementation of the inverse of the Log CDF of the Normal Distribution is now available via scipy.special.ndtri_exp.

scipy.stats improvements

Hypothesis Tests

The Mann-Whitney-Wilcoxon test, mannwhitneyu, has been rewritten. It now supports n-dimensional input, an exact test method when there are no ties, and improved documentation. Please see "Other changes" for adjustments to default behavior.

The new function scipy.stats.binomtest replaces scipy.stats.binom_test. The new function returns an object that calculates a confidence intervals of the proportion parameter. Also, performance was improved from O(n) to O(log(n)) by using binary search.

The two-sample version of the Cramer-von Mises test is implemented in scipy.stats.cramervonmises_2samp.

The Alexander-Govern test is implemented in the new function scipy.stats.alexandergovern.

The new functions scipy.stats.barnard_exact and scipy.stats. boschloo_exact respectively perform Barnard's exact test and Boschloo's exact test for 2x2 contingency tables.

The new function scipy.stats.page_trend_test performs Page's test for ordered alternatives.

The new function scipy.stats.somersd performs Somers' D test for ordinal association between two variables.

An option, permutations, has been added in scipy.stats.ttest_ind to perform permutation t-tests. A trim option was also added to perform a trimmed (Yuen's) t-test.

The alternative parameter was added to the skewtest, kurtosistest, ranksums, mood, ansari, linregress, and spearmanr functions to allow one-sided hypothesis testing.

Sample statistics

The new function scipy.stats.differential_entropy estimates the differential entropy of a continuous distribution from a sample.

The boxcox and boxcox_normmax now allow the user to control the optimizer used to minimize the negative log-likelihood function.

A new function scipy.stats.contingency.relative_risk calculates the relative risk, or risk ratio, of a 2x2 contingency table. The object returned has a method to compute the confidence interval of the relative risk.

Performance improvements in the skew and kurtosis functions achieved by removal of repeated/redundant calculations.

Substantial performance improvements in scipy.stats.mstats.hdquantiles_sd.

The new function scipy.stats.contingency.association computes several measures of association for a contingency table: Pearsons contingency coefficient, Cramer's V, and Tschuprow's T.

The parameter nan_policy was added to scipy.stats.zmap to provide options for handling the occurrence of nan in the input data.

The parameter ddof was added to scipy.stats.variation and scipy.stats.mstats.variation.

The parameter weights was added to scipy.stats.gmean.

Statistical Distributions

We now vendor and leverage the Boost C++ library to address a number of previously reported issues in stats. Notably, beta, binom, nbinom now have Boost backends, and it is straightforward to leverage the backend for additional functions.

The skew Cauchy probability distribution has been implemented as scipy.stats.skewcauchy.

The Zipfian probability distribution has been implemented as scipy.stats.zipfian.

The new distributions nchypergeom_fisher and nchypergeom_wallenius implement the Fisher and Wallenius versions of the noncentral hypergeometric distribution, respectively.

The generalized hyperbolic distribution was added in scipy.stats.genhyperbolic.

The studentized range distribution was added in scipy.stats.studentized_range.

scipy.stats.argus now has improved handling for small parameter values.

Better argument handling/preparation has resulted in performance improvements for many distributions.

The cosine distribution has added ufuncs for ppf, cdf, sf, and isf methods including numerical precision improvements at the edges of the support of the distribution.

An option to fit the distribution to data by the method of moments has been added to the fit method of the univariate continuous distributions.

Other

scipy.stats.bootstrap has been added to allow estimation of the confidence interval and standard error of a statistic.

The new function scipy.stats.contingency.crosstab computes a contingency table (i.e. a table of counts of unique entries) for the given data.

scipy.stats.NumericalInverseHermite enables fast random variate sampling and percentile point function evaluation of an arbitrary univariate statistical distribution.

New scipy.stats.qmc module

This new module provides Quasi-Monte Carlo (QMC) generators and associated helper functions.

It provides a generic class scipy.stats.qmc.QMCEngine which defines a QMC engine/sampler. An engine is state aware: it can be continued, advanced and reset. 3 base samplers are available:

  • scipy.stats.qmc.Sobol the well known Sobol low discrepancy sequence. Several warnings have been added to guide the user into properly using this sampler. The sequence is scrambled by default.
  • scipy.stats.qmc.Halton: Halton low discrepancy sequence. The sequence is scrambled by default.
  • scipy.stats.qmc.LatinHypercube: plain LHS design.

And 2 special samplers are available:

  • scipy.stats.qmc.MultinomialQMC: sampling from a multinomial distribution using any of the base scipy.stats.qmc.QMCEngine.
  • scipy.stats.qmc.MultivariateNormalQMC: sampling from a multivariate Normal using any of the base scipy.stats.qmc.QMCEngine.

The module also provide the following helpers:

  • scipy.stats.qmc.discrepancy: assess the quality of a set of points in terms of space coverage.
  • scipy.stats.qmc.update_discrepancy: can be used in an optimization loop to construct a good set of points.
  • scipy.stats.qmc.scale: easily scale a set of points from (to) the unit interval to (from) a given range.

Deprecated features

scipy.linalg deprecations

  • scipy.linalg.pinv2 is deprecated and its functionality is completely subsumed into scipy.linalg.pinv
  • Both rcond, cond keywords of scipy.linalg.pinv and scipy.linalg.pinvh were not working and now are deprecated. They are now replaced with functioning atol and rtol keywords with clear usage.

scipy.spatial deprecations

  • scipy.spatial.distance metrics expect 1d input vectors but will call np.squeeze on their inputs to accept any extra length-1 dimensions. That behaviour is now deprecated.

Backwards incompatible changes

Other changes

We now accept and leverage performance improvements from the ahead-of-time Python-to-C++ transpiler, Pythran, which can be optionally disabled (via export SCIPY_USE_PYTHRAN=0) but is enabled by default at build time.

There are two changes to the default behavior of scipy.stats.mannwhitenyu:

  • For years, use of the default alternative=None was deprecated; explicit alternative specification was required. Use of the new default value of alternative, "two-sided", is now permitted.
  • Previously, all p-values were based on an asymptotic approximation. Now, for small samples without ties, the p-values returned are exact by default.

Support has been added for PEP 621 (project metadata in pyproject.toml)

We now support a Gitpod environment to reduce the barrier to entry for SciPy development; for more details see :ref:quickstart-gitpod.

Authors

  • @endolith
  • Jelle Aalbers +
  • Adam +
  • Tania Allard +
  • Sven Baars +
  • Max Balandat +
  • baumgarc +
  • Christoph Baumgarten
  • Peter Bell
  • Lilian Besson
  • Robinson Besson +
  • Max Bolingbroke
  • Blair Bonnett +
  • Jordão Bragantini
  • Harm Buisman +
  • Evgeni Burovski
  • Matthias Bussonnier
  • Dominic C
  • CJ Carey
  • Ramón Casero +
  • Chachay +
  • charlotte12l +
  • Benjamin Curtice Corbett +
  • Falcon Dai +
  • Ian Dall +
  • Terry Davis
  • droussea2001 +
  • DWesl +
  • dwight200 +
  • Thomas J. Fan +
  • Joseph Fox-Rabinovitz
  • Max Frei +
  • Laura Gutierrez Funderburk +
  • gbonomib +
  • Matthias Geier +
  • Pradipta Ghosh +
  • Ralf Gommers
  • Evan H +
  • h-vetinari
  • Matt Haberland
  • Anselm Hahn +
  • Alex Henrie
  • Piet Hessenius +
  • Trever Hines +
  • Elisha Hollander +
  • Stephan Hoyer
  • Tom Hu +
  • Kei Ishikawa +
  • Julien Jerphanion
  • Robert Kern
  • Shashank KS +
  • Peter Mahler Larsen
  • Eric Larson
  • Cheng H. Lee +
  • Gregory R. Lee
  • Jean-Benoist Leger +
  • lgfunderburk +
  • liam-o-marsh +
  • Xingyu Liu +
  • Alex Loftus +
  • Christian Lorentzen +
  • Cong Ma
  • Marc +
  • MarkPundurs +
  • Markus Löning +
  • Liam Marsh +
  • Nicholas McKibben
  • melissawm +
  • Jamie Morton
  • Andrew Nelson
  • Nikola Forró
  • Tor Nordam +
  • Olivier Gauthé +
  • Rohit Pandey +
  • Avanindra Kumar Pandeya +
  • Tirth Patel
  • paugier +
  • Alex H. Wagner, PhD +
  • Jeff Plourde +
  • Ilhan Polat
  • pranavrajpal +
  • Vladyslav Rachek
  • Bharat Raghunathan
  • Recursing +
  • Tyler Reddy
  • Lucas Roberts
  • Gregor Robinson +
  • Pamphile Roy +
  • Atsushi Sakai
  • Benjamin Santos
  • Martin K. Scherer +
  • Thomas Schmelzer +
  • Daniel Scott +
  • Sebastian Wallkötter +
  • serge-sans-paille +
  • Namami Shanker +
  • Masashi Shibata +
  • Alexandre de Siqueira +
  • Albert Steppi +
  • Adam J. Stewart +
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Mike Taves
  • Dan Temkin +
  • Nicolas Tessore +
  • tsubota20 +
  • Robert Uhl
  • christos val +
  • Bas van Beek +
  • Ashutosh Varma +
  • Jose Vazquez +
  • Sebastiano Vigna
  • Aditya Vijaykumar
  • VNMabus
  • Arthur Volant +
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Anreas Weh
  • Josh Wilson
  • Rory Yorke
  • Egor Zemlyanoy
  • Marc Zoeller +
  • zoj613 +
  • 秋纫 +

A total of 126 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 5 years ago

scipy - SciPy 1.7.0rc1

SciPy 1.7.0 Release Notes

Note: Scipy 1.7.0 is not released yet!

SciPy 1.7.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.7.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • A new submodule for quasi-Monte Carlo, scipy.stats.qmc, was added
  • The documentation design was updated to use the same PyData-Sphinx theme as other NumFOCUS packages like NumPy.
  • We now vendor and leverage the Boost C++ library to enable numerous improvements for long-standing weaknesses in scipy.stats
  • scipy.stats has six new distributions, eight new (or overhauled) hypothesis tests, a new function for bootstrapping, a class that enables fast random variate sampling and percentile point function evaluation, and many other enhancements.
  • cdist and pdist distance calculations are faster for several metrics, especially weighted cases, thanks to a rewrite to a new C++ backend framework
  • A new class for radial basis function interpolation, RBFInterpolator, was added to address issues with the Rbf class.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of the improvements to scipy.stats.

New features

scipy.cluster improvements

An optional argument, seed, has been added to kmeans and kmeans2 to set the random generator and random state.

scipy.interpolate improvements

Improved input validation and error messages for fitpack.bispev and fitpack.parder for scenarios that previously caused substantial confusion for users.

The class RBFInterpolator was added to supersede the Rbf class. The new class has usage that more closely follows other interpolator classes, corrects sign errors that caused unexpected smoothing behavior, includes polynomial terms in the interpolant (which are necessary for some RBF choices), and supports interpolation using only the k-nearest neighbors for memory efficiency.

scipy.linalg improvements

An LAPACK wrapper was added for access to the tgexc subroutine.

scipy.ndimage improvements

scipy.ndimage.affine_transform is now able to infer the output_shape from the out array.

scipy.optimize improvements

The optional parameter bounds was added to _minimize_neldermead to support bounds constraints for the Nelder-Mead solver.

trustregion methods trust-krylov, dogleg and trust-ncg can now estimate hess by finite difference using one of ["2-point", "3-point", "cs"].

halton was added as a sampling_method in scipy.optimize.shgo. sobol was fixed and is now using scipy.stats.qmc.Sobol.

halton and sobol were added as init methods in scipy.optimize.differential_evolution.

differential_evolution now accepts an x0 parameter to provide an initial guess for the minimization.

least_squares has a modest performance improvement when SciPy is built with Pythran transpiler enabled.

When linprog is used with method 'highs', 'highs-ipm', or 'highs-ds', the result object now reports the marginals (AKA shadow prices, dual values) and residuals associated with each constraint.

scipy.signal improvements

get_window supports general_cosine and general_hamming window functions.

scipy.signal.medfilt2d now releases the GIL where appropriate to enable performance gains via multithreaded calculations.

scipy.sparse improvements

Addition of dia_matrix sparse matrices is now faster.

scipy.spatial improvements

distance.cdist and distance.pdist performance has greatly improved for certain weighted metrics. Namely: minkowski, euclidean, chebyshev, canberra, and cityblock.

Modest performance improvements for many of the unweighted cdist and pdist metrics noted above.

The parameter seed was added to scipy.spatial.vq.kmeans and scipy.spatial.vq.kmeans2.

The parameters axis and keepdims where added to scipy.spatial.distance.jensenshannon.

The rotation methods from_rotvec and as_rotvec now accept a degrees argument to specify usage of degrees instead of radians.

scipy.special improvements

Wright's generalized Bessel function for positive arguments was added as scipy.special.wright_bessel.

An implementation of the inverse of the Log CDF of the Normal Distribution is now available via scipy.special.ndtri_exp.

scipy.stats improvements

Hypothesis Tests

The Mann-Whitney-Wilcoxon test, mannwhitneyu, has been rewritten. It now supports n-dimensional input, an exact test method when there are no ties, and improved documentation. Please see "Other changes" for adjustments to default behavior.

The new function scipy.stats.binomtest replaces scipy.stats.binom_test. The new function returns an object that calculates a confidence intervals of the proportion parameter. Also, performance was improved from O(n) to O(log(n)) by using binary search.

The two-sample version of the Cramer-von Mises test is implemented in scipy.stats.cramervonmises_2samp.

The Alexander-Govern test is implemented in the new function scipy.stats.alexandergovern.

The new functions scipy.stats.barnard_exact and scipy.stats. boschloo_exact respectively perform Barnard's exact test and Boschloo's exact test for 2x2 contingency tables.

The new function scipy.stats.page_trend_test performs Page's test for ordered alternatives.

The new function scipy.stats.somersd performs Somers' D test for ordinal association between two variables.

An option, permutations, has been added in scipy.stats.ttest_ind to perform permutation t-tests. A trim option was also added to perform a trimmed (Yuen's) t-test.

The alternative parameter was added to the skewtest, kurtosistest, ranksums, mood, ansari, linregress, and spearmanr functions to allow one-sided hypothesis testing.

Sample statistics

The new function scipy.stats.differential_entropy estimates the differential entropy of a continuous distribution from a sample.

The boxcox and boxcox_normmax now allow the user to control the optimizer used to minimize the negative log-likelihood function.

A new function scipy.stats.contingency.relative_risk calculates the relative risk, or risk ratio, of a 2x2 contingency table. The object returned has a method to compute the confidence interval of the relative risk.

Performance improvements in the skew and kurtosis functions achieved by removal of repeated/redundant calculations.

Substantial performance improvements in scipy.stats.mstats.hdquantiles_sd.

The new function scipy.stats.contingency.association computes several measures of association for a contingency table: Pearsons contingency coefficient, Cramer's V, and Tschuprow's T.

The parameter nan_policy was added to scipy.stats.zmap to provide options for handling the occurrence of nan in the input data.

The parameter ddof was added to scipy.stats.variation and scipy.stats.mstats.variation.

The parameter weights was added to scipy.stats.gmean.

Statistical Distributions

We now vendor and leverage the Boost C++ library to address a number of previously reported issues in stats. Notably, beta, binom, nbinom now have Boost backends, and it is straightforward to leverage the backend for additional functions.

The skew Cauchy probability distribution has been implemented as scipy.stats.skewcauchy.

The Zipfian probability distribution has been implemented as scipy.stats.zipfian.

The new distributions nchypergeom_fisher and nchypergeom_wallenius implement the Fisher and Wallenius versions of the noncentral hypergeometric distribution, respectively.

The generalized hyperbolic distribution was added in scipy.stats.genhyperbolic.

The studentized range distribution was added in scipy.stats.studentized_range.

scipy.stats.argus now has improved handling for small parameter values.

Better argument handling/preparation has resulted in performance improvements for many distributions.

The cosine distribution has added ufuncs for ppf, cdf, sf, and isf methods including numerical precision improvements at the edges of the support of the distribution.

An option to fit the distribution to data by the method of moments has been added to the fit method of the univariate continuous distributions.

Other

scipy.stats.bootstrap has been added to allow estimation of the confidence interval and standard error of a statistic.

The new function scipy.stats.contingency.crosstab computes a contingency table (i.e. a table of counts of unique entries) for the given data.

scipy.stats.NumericalInverseHermite enables fast random variate sampling and percentile point function evaluation of an arbitrary univariate statistical distribution.

New scipy.stats.qmc module

This new module provides Quasi-Monte Carlo (QMC) generators and associated helper functions.

It provides a generic class scipy.stats.qmc.QMCEngine which defines a QMC engine/sampler. An engine is state aware: it can be continued, advanced and reset. 3 base samplers are available:

  • scipy.stats.qmc.Sobol the well known Sobol low discrepancy sequence. Several warnings have been added to guide the user into properly using this sampler. The sequence is scrambled by default.
  • scipy.stats.qmc.Halton: Halton low discrepancy sequence. The sequence is scrambled by default.
  • scipy.stats.qmc.LatinHypercube: plain LHS design.

And 2 special samplers are available:

  • scipy.stats.qmc.MultinomialQMC: sampling from a multinomial distribution using any of the base scipy.stats.qmc.QMCEngine.
  • scipy.stats.qmc.MultivariateNormalQMC: sampling from a multivariate Normal using any of the base scipy.stats.qmc.QMCEngine.

The module also provide the following helpers:

  • scipy.stats.qmc.discrepancy: assess the quality of a set of points in terms of space coverage.
  • scipy.stats.qmc.update_discrepancy: can be used in an optimization loop to construct a good set of points.
  • scipy.stats.qmc.scale: easily scale a set of points from (to) the unit interval to (from) a given range.

Deprecated features

scipy.linalg deprecations

  • scipy.linalg.pinv2 is deprecated and its functionality is completely subsumed into scipy.linalg.pinv
  • Both rcond, cond keywords of scipy.linalg.pinv and scipy.linalg.pinvh were not working and now are deprecated. They are now replaced with functioning atol and rtol keywords with clear usage.

scipy.spatial deprecations

  • scipy.spatial.distance metrics expect 1d input vectors but will call np.squeeze on their inputs to accept any extra length-1 dimensions. That behaviour is now deprecated.

Backwards incompatible changes

Other changes

We now accept and leverage performance improvements from the ahead-of-time Python-to-C++ transpiler, Pythran, which can be optionally disabled (via export SCIPY_USE_PYTHRAN=0) but is enabled by default at build time.

There are two changes to the default behavior of scipy.stats.mannwhitenyu:

  • For years, use of the default alternative=None was deprecated; explicit alternative specification was required. Use of the new default value of alternative, "two-sided", is now permitted.
  • Previously, all p-values were based on an asymptotic approximation. Now, for small samples without ties, the p-values returned are exact by default.

Support has been added for PEP 621 (project metadata in pyproject.toml)

We now support a Gitpod environment to reduce the barrier to entry for SciPy development; for more details see quickstart-gitpod.

Authors

  • @endolith
  • Jelle Aalbers +
  • Adam +
  • Tania Allard +
  • Sven Baars +
  • Max Balandat +
  • baumgarc +
  • Christoph Baumgarten
  • Peter Bell
  • Lilian Besson
  • Robinson Besson +
  • Max Bolingbroke
  • Blair Bonnett +
  • Jordão Bragantini
  • Harm Buisman +
  • Evgeni Burovski
  • Matthias Bussonnier
  • Dominic C
  • CJ Carey
  • Ramón Casero +
  • Chachay +
  • charlotte12l +
  • Benjamin Curtice Corbett +
  • Falcon Dai +
  • Ian Dall +
  • Terry Davis
  • droussea2001 +
  • DWesl +
  • dwight200 +
  • Thomas J. Fan +
  • Joseph Fox-Rabinovitz
  • Max Frei +
  • Laura Gutierrez Funderburk +
  • gbonomib +
  • Matthias Geier +
  • Pradipta Ghosh +
  • Ralf Gommers
  • Evan H +
  • h-vetinari
  • Matt Haberland
  • Anselm Hahn +
  • Alex Henrie
  • Piet Hessenius +
  • Trever Hines +
  • Elisha Hollander +
  • Stephan Hoyer
  • Tom Hu +
  • Kei Ishikawa +
  • Julien Jerphanion
  • Robert Kern
  • Shashank KS +
  • Peter Mahler Larsen
  • Eric Larson
  • Cheng H. Lee +
  • Gregory R. Lee
  • Jean-Benoist Leger +
  • lgfunderburk +
  • liam-o-marsh +
  • Xingyu Liu +
  • Alex Loftus +
  • Christian Lorentzen +
  • Cong Ma
  • Marc +
  • MarkPundurs +
  • Markus Löning +
  • Liam Marsh +
  • Nicholas McKibben
  • melissawm +
  • Jamie Morton
  • Andrew Nelson
  • Nikola Forró
  • Tor Nordam +
  • Olivier Gauthé +
  • Rohit Pandey +
  • Avanindra Kumar Pandeya +
  • Tirth Patel
  • paugier +
  • Alex H. Wagner, PhD +
  • Jeff Plourde +
  • Ilhan Polat
  • pranavrajpal +
  • Vladyslav Rachek
  • Bharat Raghunathan
  • Recursing +
  • Tyler Reddy
  • Lucas Roberts
  • Gregor Robinson +
  • Pamphile Roy +
  • Atsushi Sakai
  • Benjamin Santos
  • Martin K. Scherer +
  • Thomas Schmelzer +
  • Daniel Scott +
  • Sebastian Wallkötter +
  • serge-sans-paille +
  • Namami Shanker +
  • Masashi Shibata +
  • Alexandre de Siqueira +
  • Albert Steppi +
  • Adam J. Stewart +
  • Kai Striega
  • Diana Sukhoverkhova
  • Søren Fuglede Jørgensen
  • Mike Taves
  • Dan Temkin +
  • Nicolas Tessore +
  • tsubota20 +
  • Robert Uhl
  • christos val +
  • Bas van Beek +
  • Ashutosh Varma +
  • Jose Vazquez +
  • Sebastiano Vigna
  • Aditya Vijaykumar
  • VNMabus
  • Arthur Volant +
  • Samuel Wallan
  • Stefan van der Walt
  • Warren Weckesser
  • Anreas Weh
  • Josh Wilson
  • Rory Yorke
  • Egor Zemlyanoy
  • Marc Zoeller +
  • zoj613 +
  • 秋纫 +

A total of 126 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 5 years ago

scipy - SciPy 1.6.3

SciPy 1.6.3 Release Notes

SciPy 1.6.3 is a bug-fix release with no new features compared to 1.6.2.

Authors

  • Peter Bell
  • Ralf Gommers
  • Matt Haberland
  • Peter Mahler Larsen
  • Tirth Patel
  • Tyler Reddy
  • Pamphile ROY +
  • Xingyu Liu +

A total of 8 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 5 years ago

scipy - SciPy 1.6.2

SciPy 1.6.2 Release Notes

SciPy 1.6.2 is a bug-fix release with no new features compared to 1.6.1. This is also the first SciPy release to place upper bounds on some dependencies to improve the long-term repeatability of source builds.

Authors

  • Pradipta Ghosh +
  • Tyler Reddy
  • Ralf Gommers
  • Martin K. Scherer +
  • Robert Uhl
  • Warren Weckesser

A total of 6 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 5 years ago

scipy - SciPy 1.6.1

SciPy 1.6.1 Release Notes

SciPy 1.6.1 is a bug-fix release with no new features compared to 1.6.0.

Please note that for SciPy wheels to correctly install with pip on macOS 11, pip >= 20.3.3 is needed.

Authors

  • Peter Bell
  • Evgeni Burovski
  • CJ Carey
  • Ralf Gommers
  • Peter Mahler Larsen
  • Cheng H. Lee +
  • Cong Ma
  • Nicholas McKibben
  • Nikola Forró
  • Tyler Reddy
  • Warren Weckesser

A total of 11 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.6.0

SciPy 1.6.0 Release Notes

SciPy 1.6.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.6.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • scipy.ndimage improvements: Fixes and ehancements to boundary extension modes for interpolation functions. Support for complex-valued inputs in many filtering and interpolation functions. New grid_mode option for scipy.ndimage.zoom to enable results consistent with scikit-image's rescale.
  • scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS library.
  • scipy.stats improvements including new distributions, a new test, and enhancements to existing distributions and tests

New features

scipy.special improvements

scipy.special now has improved support for 64-bit LAPACK backend

scipy.odr improvements

scipy.odr now has support for 64-bit integer BLAS

scipy.odr.ODR has gained an optional overwrite argument so that existing files may be overwritten.

scipy.integrate improvements

Some renames of functions with poor names were done, with the old names retained without being in the reference guide for backwards compatibility reasons: - integrate.simps was renamed to integrate.simpson - integrate.trapz was renamed to integrate.trapezoid - integrate.cumtrapz was renamed to integrate.cumulative_trapezoid

scipy.cluster improvements

scipy.cluster.hierarchy.DisjointSet has been added for incremental connectivity queries.

scipy.cluster.hierarchy.dendrogram return value now also includes leaf color information in leaves_color_list.

scipy.interpolate improvements

scipy.interpolate.interp1d has a new method nearest-up, similar to the existing method nearest but rounds half-integers up instead of down.

scipy.io improvements

Support has been added for reading arbitrary bit depth integer PCM WAV files from 1- to 32-bit, including the commonly-requested 24-bit depth.

scipy.linalg improvements

The new function scipy.linalg.matmul_toeplitz uses the FFT to compute the product of a Toeplitz matrix with another matrix.

scipy.linalg.sqrtm and scipy.linalg.logm have performance improvements thanks to additional Cython code.

Python LAPACK wrappers have been added for pptrf, pptrs, ppsv, pptri, and ppcon.

scipy.linalg.norm and the svd family of functions will now use 64-bit integer backends when available.

scipy.ndimage improvements

scipy.ndimage.convolve, scipy.ndimage.correlate and their 1d counterparts now accept both complex-valued images and/or complex-valued filter kernels. All convolution-based filters also now accept complex-valued inputs (e.g. gaussian_filter, uniform_filter, etc.).

Multiple fixes and enhancements to boundary handling were introduced to scipy.ndimage interpolation functions (i.e. affine_transform, geometric_transform, map_coordinates, rotate, shift, zoom).

A new boundary mode, grid-wrap was added which wraps images periodically, using a period equal to the shape of the input image grid. This is in contrast to the existing wrap mode which uses a period that is one sample smaller than the original signal extent along each dimension.

A long-standing bug in the reflect boundary condition has been fixed and the mode grid-mirror was introduced as a synonym for reflect.

A new boundary mode, grid-constant is now available. This is similar to the existing ndimage constant mode, but interpolation will still performed at coordinate values outside of the original image extent. This grid-constant mode is consistent with OpenCV's BORDER_CONSTANT mode and scikit-image's constant mode.

Spline pre-filtering (used internally by ndimage interpolation functions when order >= 2), now supports all boundary modes rather than always defaulting to mirror boundary conditions. The standalone functions spline_filter and spline_filter1d have analytical boundary conditions that match modes mirror, grid-wrap and reflect.

scipy.ndimage interpolation functions now accept complex-valued inputs. In this case, the interpolation is applied independently to the real and imaginary components.

The ndimage tutorials (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been updated with new figures to better clarify the exact behavior of all of the interpolation boundary modes.

scipy.ndimage.zoom now has a grid_mode option that changes the coordinate of the center of the first pixel along an axis from 0 to 0.5. This allows resizing in a manner that is consistent with the behavior of scikit-image's resize and rescale functions (and OpenCV's cv2.resize).

scipy.optimize improvements

scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS C++ library. method='highs-ds' uses a high performance dual revised simplex implementation (HSOL), method='highs-ipm' uses an interior-point method with crossover, and method='highs' chooses between the two automatically. These methods are typically much faster and often exceed the accuracy of other linprog methods, so we recommend explicitly specifying one of these three method values when using linprog.

scipy.optimize.quadratic_assignment has been added for approximate solution of the quadratic assignment problem.

scipy.optimize.linear_sum_assignment now has a substantially reduced overhead for small cost matrix sizes

scipy.optimize.least_squares has improved performance when the user provides the jacobian as a sparse jacobian already in csr_matrix format

scipy.optimize.linprog now has an rr_method argument for specification of the method used for redundancy handling, and a new method for this purpose is available based on the interpolative decomposition approach.

scipy.signal improvements

scipy.signal.gammatone has been added to design FIR or IIR filters that model the human auditory system.

scipy.signal.iircomb has been added to design IIR peaking/notching comb filters that can boost/attenuate a frequency from a signal.

scipy.signal.sosfilt performance has been improved to avoid some previously- observed slowdowns

scipy.signal.windows.taylor has been added--the Taylor window function is commonly used in radar digital signal processing

scipy.signal.gauss_spline now supports list type input for consistency with other related SciPy functions

scipy.signal.correlation_lags has been added to allow calculation of the lag/ displacement indices array for 1D cross-correlation.

scipy.sparse improvements

A solver for the minimum weight full matching problem for bipartite graphs, also known as the linear assignment problem, has been added in scipy.sparse.csgraph.min_weight_full_bipartite_matching. In particular, this provides functionality analogous to that of scipy.optimize.linear_sum_assignment, but with improved performance for sparse inputs, and the ability to handle inputs whose dense representations would not fit in memory.

The time complexity of scipy.sparse.block_diag has been improved dramatically from quadratic to linear.

scipy.sparse.linalg improvements

The vendored version of SuperLU has been updated

scipy.fft improvements

The vendored pocketfft library now supports compiling with ARM neon vector extensions and has improved thread pool behavior.

scipy.spatial improvements

The python implementation of KDTree has been dropped and KDTree is now implemented in terms of cKDTree. You can now expect cKDTree-like performance by default. This also means sys.setrecursionlimit no longer needs to be increased for querying large trees.

transform.Rotation has been updated with support for Modified Rodrigues Parameters alongside the existing rotation representations (PR gh-12667).

scipy.spatial.transform.Rotation has been partially cythonized, with some performance improvements observed

scipy.spatial.distance.cdist has improved performance with the minkowski metric, especially for p-norm values of 1 or 2.

scipy.stats improvements

New distributions have been added to scipy.stats:

  • The asymmetric Laplace continuous distribution has been added as scipy.stats.laplace_asymmetric.
  • The negative hypergeometric distribution has been added as scipy.stats.nhypergeom.
  • The multivariate t distribution has been added as scipy.stats.multivariate_t.
  • The multivariate hypergeometric distribution has been added as scipy.stats.multivariate_hypergeom.

The fit method has been overridden for several distributions (laplace, pareto, rayleigh, invgauss, logistic, gumbel_l, gumbel_r); they now use analytical, distribution-specific maximum likelihood estimation results for greater speed and accuracy than the generic (numerical optimization) implementation.

The one-sample Cramér-von Mises test has been added as scipy.stats.cramervonmises.

An option to compute one-sided p-values was added to scipy.stats.ttest_1samp, scipy.stats.ttest_ind_from_stats, scipy.stats.ttest_ind and scipy.stats.ttest_rel.

The function scipy.stats.kendalltau now has an option to compute Kendall's tau-c (also known as Stuart's tau-c), and support has been added for exact p-value calculations for sample sizes > 171.

stats.trapz was renamed to stats.trapezoid, with the former name retained as an alias for backwards compatibility reasons.

The function scipy.stats.linregress now includes the standard error of the intercept in its return value.

The _logpdf, _sf, and _isf methods have been added to scipy.stats.nakagami; _sf and _isf methods also added to scipy.stats.gumbel_r

The sf method has been added to scipy.stats.levy and scipy.stats.levy_l for improved precision.

scipy.stats.binned_statistic_dd performance improvements for the following computed statistics: max, min, median, and std.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of these improvements to scipy.stats.

Deprecated features

scipy.spatial changes

Calling KDTree.query with k=None to find all neighbours is deprecated. Use KDTree.query_ball_point instead.

distance.wminkowski was deprecated; use distance.minkowski and supply weights with the w keyword instead.

Backwards incompatible changes

scipy changes

Using scipy.fft as a function aliasing numpy.fft.fft was removed after being deprecated in SciPy 1.4.0. As a result, the scipy.fft submodule must be explicitly imported now, in line with other SciPy subpackages.

scipy.signal changes

The output of decimate, lfilter_zi, lfiltic, sos2tf, and sosfilt_zi have been changed to match numpy.result_type of their inputs.

The window function slepian was removed. It had been deprecated since SciPy 1.1.

scipy.spatial changes

cKDTree.query now returns 64-bit rather than 32-bit integers on Windows, making behaviour consistent between platforms (PR gh-12673).

scipy.stats changes

The frechet_l and frechet_r distributions were removed. They were deprecated since SciPy 1.0.

Other changes

setup_requires was removed from setup.py. This means that users invoking python setup.py install without having numpy already installed will now get an error, rather than having numpy installed for them via easy_install. This install method was always fragile and problematic, users are encouraged to use pip when installing from source.

  • Fixed a bug in scipy.optimize.dual_annealing accept_reject calculation that caused uphill jumps to be accepted less frequently.
  • The time required for (un)pickling of scipy.stats.rv_continuous, scipy.stats.rv_discrete, and scipy.stats.rv_frozen has been significantly reduced (gh12550). Inheriting subclasses should note that __setstate__ no longer calls __init__ upon unpickling.

Authors

  • @endolith
  • @vkk800
  • aditya +
  • George Bateman +
  • Christoph Baumgarten
  • Peter Bell
  • Tobias Biester +
  • Keaton J. Burns +
  • Evgeni Burovski
  • Rüdiger Busche +
  • Matthias Bussonnier
  • Dominic C +
  • Corallus Caninus +
  • CJ Carey
  • Thomas A Caswell
  • chapochn +
  • Lucía Cheung
  • Zach Colbert +
  • Coloquinte +
  • Yannick Copin +
  • Devin Crowley +
  • Terry Davis +
  • Michaël Defferrard +
  • devonwp +
  • Didier +
  • divenex +
  • Thomas Duvernay +
  • Eoghan O'Connell +
  • Gökçen Eraslan
  • Kristian Eschenburg +
  • Ralf Gommers
  • Thomas Grainger +
  • GreatV +
  • Gregory Gundersen +
  • h-vetinari +
  • Matt Haberland
  • Mark Harfouche +
  • He He +
  • Alex Henrie
  • Chun-Ming Huang +
  • Martin James McHugh III +
  • Alex Izvorski +
  • Joey +
  • ST John +
  • Jonas Jonker +
  • Julius Bier Kirkegaard
  • Marcin Konowalczyk +
  • Konrad0
  • Sam Van Kooten +
  • Sergey Koposov +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Loïc Estève
  • Jean-Luc Margot +
  • MarkusKoebis +
  • Nikolay Mayorov
  • G. D. McBain
  • Andrew McCluskey +
  • Nicholas McKibben
  • Sturla Molden
  • Denali Molitor +
  • Eric Moore
  • Shashaank N +
  • Prashanth Nadukandi +
  • nbelakovski +
  • Andrew Nelson
  • Nick +
  • Nikola Forró +
  • odidev
  • ofirr +
  • Sambit Panda
  • Dima Pasechnik
  • Tirth Patel +
  • Matti Picus
  • Paweł Redzyński +
  • Vladimir Philipenko +
  • Philipp Thölke +
  • Ilhan Polat
  • Eugene Prilepin +
  • Vladyslav Rachek
  • Ram Rachum +
  • Tyler Reddy
  • Martin Reinecke +
  • Simon Segerblom Rex +
  • Lucas Roberts
  • Benjamin Rowell +
  • Eli Rykoff +
  • Atsushi Sakai
  • Moritz Schulte +
  • Daniel B. Smith
  • Steve Smith +
  • Jan Soedingrekso +
  • Victor Stinner +
  • Jose Storopoli +
  • Diana Sukhoverkhova +
  • Søren Fuglede Jørgensen
  • taoky +
  • Mike Taves +
  • Ian Thomas +
  • Will Tirone +
  • Frank Torres +
  • Seth Troisi
  • Ronald van Elburg +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Saul Ivan Rivas Vega +
  • Pauli Virtanen
  • Jan Vleeshouwers
  • Samuel Wallan
  • Warren Weckesser
  • Ben West +
  • Eric Wieser
  • WillTirone +
  • Levi John Wolf +
  • Zhiqing Xiao
  • Rory Yorke +
  • Yun Wang (Maigo) +
  • Egor Zemlyanoy +
  • ZhihuiChen0903 +
  • Jacob Zhong +

A total of 122 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.6.0rc2

SciPy 1.6.0 Release Notes

note: Scipy 1.6.0 is not released yet!

SciPy 1.6.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.6.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • scipy.ndimage improvements: Fixes and ehancements to boundary extension modes for interpolation functions. Support for complex-valued inputs in many filtering and interpolation functions. New grid_mode option for scipy.ndimage.zoom to enable results consistent with scikit-image's rescale.
  • scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS library.
  • scipy.stats improvements including new distributions, a new test, and enhancements to existing distributions and tests

New features

scipy.special improvements

scipy.special now has improved support for 64-bit LAPACK backend

scipy.odr improvements

scipy.odr now has support for 64-bit integer BLAS

scipy.odr.ODR has gained an optional overwrite argument so that existing files may be overwritten.

scipy.integrate improvements

Some renames of functions with poor names were done, with the old names retained without being in the reference guide for backwards compatibility reasons: - integrate.simps was renamed to integrate.simpson - integrate.trapz was renamed to integrate.trapezoid - integrate.cumtrapz was renamed to integrate.cumulative_trapezoid

scipy.cluster improvements

scipy.cluster.hierarchy.DisjointSet has been added for incremental connectivity queries.

scipy.cluster.hierarchy.dendrogram return value now also includes leaf color information in leaves_color_list.

scipy.interpolate improvements

scipy.interpolate.interp1d has a new method nearest-up, similar to the existing method nearest but rounds half-integers up instead of down.

scipy.io improvements

Support has been added for reading arbitrary bit depth integer PCM WAV files from 1- to 32-bit, including the commonly-requested 24-bit depth.

scipy.linalg improvements

The new function scipy.linalg.matmul_toeplitz uses the FFT to compute the product of a Toeplitz matrix with another matrix.

scipy.linalg.sqrtm and scipy.linalg.logm have performance improvements thanks to additional Cython code.

Python LAPACK wrappers have been added for pptrf, pptrs, ppsv, pptri, and ppcon.

scipy.linalg.norm and the svd family of functions will now use 64-bit integer backends when available.

scipy.ndimage improvements

scipy.ndimage.convolve, scipy.ndimage.correlate and their 1d counterparts now accept both complex-valued images and/or complex-valued filter kernels. All convolution-based filters also now accept complex-valued inputs (e.g. gaussian_filter, uniform_filter, etc.).

Multiple fixes and enhancements to boundary handling were introduced to scipy.ndimage interpolation functions (i.e. affine_transform, geometric_transform, map_coordinates, rotate, shift, zoom).

A new boundary mode, grid-wrap was added which wraps images periodically, using a period equal to the shape of the input image grid. This is in contrast to the existing wrap mode which uses a period that is one sample smaller than the original signal extent along each dimension.

A long-standing bug in the reflect boundary condition has been fixed and the mode grid-mirror was introduced as a synonym for reflect.

A new boundary mode, grid-constant is now available. This is similar to the existing ndimage constant mode, but interpolation will still performed at coordinate values outside of the original image extent. This grid-constant mode is consistent with OpenCV's BORDER_CONSTANT mode and scikit-image's constant mode.

Spline pre-filtering (used internally by ndimage interpolation functions when order >= 2), now supports all boundary modes rather than always defaulting to mirror boundary conditions. The standalone functions spline_filter and spline_filter1d have analytical boundary conditions that match modes mirror, grid-wrap and reflect.

scipy.ndimage interpolation functions now accept complex-valued inputs. In this case, the interpolation is applied independently to the real and imaginary components.

The ndimage tutorials (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been updated with new figures to better clarify the exact behavior of all of the interpolation boundary modes.

scipy.ndimage.zoom now has a grid_mode option that changes the coordinate of the center of the first pixel along an axis from 0 to 0.5. This allows resizing in a manner that is consistent with the behavior of scikit-image's resize and rescale functions (and OpenCV's cv2.resize).

scipy.optimize improvements

scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS C++ library. method='highs-ds' uses a high performance dual revised simplex implementation (HSOL), method='highs-ipm' uses an interior-point method with crossover, and method='highs' chooses between the two automatically. These methods are typically much faster and often exceed the accuracy of other linprog methods, so we recommend explicitly specifying one of these three method values when using linprog.

scipy.optimize.quadratic_assignment has been added for approximate solution of the quadratic assignment problem.

scipy.optimize.linear_sum_assignment now has a substantially reduced overhead for small cost matrix sizes

scipy.optimize.least_squares has improved performance when the user provides the jacobian as a sparse jacobian already in csr_matrix format

scipy.optimize.linprog now has an rr_method argument for specification of the method used for redundancy handling, and a new method for this purpose is available based on the interpolative decomposition approach.

scipy.signal improvements

scipy.signal.gammatone has been added to design FIR or IIR filters that model the human auditory system.

scipy.signal.iircomb has been added to design IIR peaking/notching comb filters that can boost/attenuate a frequency from a signal.

scipy.signal.sosfilt performance has been improved to avoid some previously- observed slowdowns

scipy.signal.windows.taylor has been added--the Taylor window function is commonly used in radar digital signal processing

scipy.signal.gauss_spline now supports list type input for consistency with other related SciPy functions

scipy.signal.correlation_lags has been added to allow calculation of the lag/ displacement indices array for 1D cross-correlation.

scipy.sparse improvements

A solver for the minimum weight full matching problem for bipartite graphs, also known as the linear assignment problem, has been added in scipy.sparse.csgraph.min_weight_full_bipartite_matching. In particular, this provides functionality analogous to that of scipy.optimize.linear_sum_assignment, but with improved performance for sparse inputs, and the ability to handle inputs whose dense representations would not fit in memory.

The time complexity of scipy.sparse.block_diag has been improved dramatically from quadratic to linear.

scipy.sparse.linalg improvements

The vendored version of SuperLU has been updated

scipy.fft improvements

The vendored pocketfft library now supports compiling with ARM neon vector extensions and has improved thread pool behavior.

scipy.spatial improvements

The python implementation of KDTree has been dropped and KDTree is now implemented in terms of cKDTree. You can now expect cKDTree-like performance by default. This also means sys.setrecursionlimit no longer needs to be increased for querying large trees.

transform.Rotation has been updated with support for Modified Rodrigues Parameters alongside the existing rotation representations (PR gh-12667).

scipy.spatial.transform.Rotation has been partially cythonized, with some performance improvements observed

scipy.spatial.distance.cdist has improved performance with the minkowski metric, especially for p-norm values of 1 or 2.

scipy.stats improvements

New distributions have been added to scipy.stats:

  • The asymmetric Laplace continuous distribution has been added as scipy.stats.laplace_asymmetric.
  • The negative hypergeometric distribution has been added as scipy.stats.nhypergeom.
  • The multivariate t distribution has been added as scipy.stats.multivariate_t.
  • The multivariate hypergeometric distribution has been added as scipy.stats.multivariate_hypergeom.

The fit method has been overridden for several distributions (laplace, pareto, rayleigh, invgauss, logistic, gumbel_l, gumbel_r); they now use analytical, distribution-specific maximum likelihood estimation results for greater speed and accuracy than the generic (numerical optimization) implementation.

The one-sample Cramér-von Mises test has been added as scipy.stats.cramervonmises.

An option to compute one-sided p-values was added to scipy.stats.ttest_1samp, scipy.stats.ttest_ind_from_stats, scipy.stats.ttest_ind and scipy.stats.ttest_rel.

The function scipy.stats.kendalltau now has an option to compute Kendall's tau-c (also known as Stuart's tau-c), and support has been added for exact p-value calculations for sample sizes > 171.

stats.trapz was renamed to stats.trapezoid, with the former name retained as an alias for backwards compatibility reasons.

The function scipy.stats.linregress now includes the standard error of the intercept in its return value.

The _logpdf, _sf, and _isf methods have been added to scipy.stats.nakagami; _sf and _isf methods also added to scipy.stats.gumbel_r

The sf method has been added to scipy.stats.levy and scipy.stats.levy_l for improved precision.

scipy.stats.binned_statistic_dd performance improvements for the following computed statistics: max, min, median, and std.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of these improvements to scipy.stats.

Deprecated features

scipy.spatial changes

Calling KDTree.query with k=None to find all neighbours is deprecated. Use KDTree.query_ball_point instead.

distance.wminkowski was deprecated; use distance.minkowski and supply weights with the w keyword instead.

Backwards incompatible changes

scipy changes

Using scipy.fft as a function aliasing numpy.fft.fft was removed after being deprecated in SciPy 1.4.0. As a result, the scipy.fft submodule must be explicitly imported now, in line with other SciPy subpackages.

scipy.signal changes

The output of decimate, lfilter_zi, lfiltic, sos2tf, and sosfilt_zi have been changed to match numpy.result_type of their inputs.

The window function slepian was removed. It had been deprecated since SciPy 1.1.

scipy.spatial changes

cKDTree.query now returns 64-bit rather than 32-bit integers on Windows, making behaviour consistent between platforms (PR gh-12673).

scipy.stats changes

The frechet_l and frechet_r distributions were removed. They were deprecated since SciPy 1.0.

Other changes

setup_requires was removed from setup.py. This means that users invoking python setup.py install without having numpy already installed will now get an error, rather than having numpy installed for them via easy_install. This install method was always fragile and problematic, users are encouraged to use pip when installing from source.

  • Fixed a bug in scipy.optimize.dual_annealing accept_reject calculation that caused uphill jumps to be accepted less frequently.
  • The time required for (un)pickling of scipy.stats.rv_continuous, scipy.stats.rv_discrete, and scipy.stats.rv_frozen has been significantly reduced (gh12550). Inheriting subclasses should note that __setstate__ no longer calls __init__ upon unpickling.

Authors

  • @endolith
  • @vkk800
  • aditya +
  • George Bateman +
  • Christoph Baumgarten
  • Peter Bell
  • Tobias Biester +
  • Keaton J. Burns +
  • Evgeni Burovski
  • Rüdiger Busche +
  • Matthias Bussonnier
  • Dominic C +
  • Corallus Caninus +
  • CJ Carey
  • Thomas A Caswell
  • chapochn +
  • Lucía Cheung
  • Zach Colbert +
  • Coloquinte +
  • Yannick Copin +
  • Devin Crowley +
  • Terry Davis +
  • Michaël Defferrard +
  • devonwp +
  • Didier +
  • divenex +
  • Thomas Duvernay +
  • Eoghan O'Connell +
  • Gökçen Eraslan
  • Kristian Eschenburg +
  • Ralf Gommers
  • Thomas Grainger +
  • GreatV +
  • Gregory Gundersen +
  • h-vetinari +
  • Matt Haberland
  • Mark Harfouche +
  • He He +
  • Alex Henrie
  • Chun-Ming Huang +
  • Martin James McHugh III +
  • Alex Izvorski +
  • Joey +
  • ST John +
  • Jonas Jonker +
  • Julius Bier Kirkegaard
  • Marcin Konowalczyk +
  • Konrad0
  • Sam Van Kooten +
  • Sergey Koposov +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Loïc Estève
  • Jean-Luc Margot +
  • MarkusKoebis +
  • Nikolay Mayorov
  • G. D. McBain
  • Andrew McCluskey +
  • Nicholas McKibben
  • Sturla Molden
  • Denali Molitor +
  • Eric Moore
  • Shashaank N +
  • Prashanth Nadukandi +
  • nbelakovski +
  • Andrew Nelson
  • Nick +
  • Nikola Forró +
  • odidev
  • ofirr +
  • Sambit Panda
  • Dima Pasechnik
  • Tirth Patel +
  • Matti Picus
  • Paweł Redzyński +
  • Vladimir Philipenko +
  • Philipp Thölke +
  • Ilhan Polat
  • Eugene Prilepin +
  • Vladyslav Rachek
  • Ram Rachum +
  • Tyler Reddy
  • Martin Reinecke +
  • Simon Segerblom Rex +
  • Lucas Roberts
  • Benjamin Rowell +
  • Eli Rykoff +
  • Atsushi Sakai
  • Moritz Schulte +
  • Daniel B. Smith
  • Steve Smith +
  • Jan Soedingrekso +
  • Victor Stinner +
  • Jose Storopoli +
  • Diana Sukhoverkhova +
  • Søren Fuglede Jørgensen
  • taoky +
  • Mike Taves +
  • Ian Thomas +
  • Will Tirone +
  • Frank Torres +
  • Seth Troisi
  • Ronald van Elburg +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Saul Ivan Rivas Vega +
  • Pauli Virtanen
  • Jan Vleeshouwers
  • Samuel Wallan
  • Warren Weckesser
  • Ben West +
  • Eric Wieser
  • WillTirone +
  • Levi John Wolf +
  • Zhiqing Xiao
  • Rory Yorke +
  • Yun Wang (Maigo) +
  • Egor Zemlyanoy +
  • ZhihuiChen0903 +
  • Jacob Zhong +

A total of 122 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.6.0rc1

SciPy 1.6.0 Release Notes

Note: Scipy 1.6.0 is not released yet!

SciPy 1.6.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.6.x branch, and on adding new features on the master branch.

This release requires Python 3.7+ and NumPy 1.16.5 or greater.

For running on PyPy, PyPy3 6.0+ is required.

Highlights of this release

  • scipy.ndimage improvements: Fixes and ehancements to boundary extension modes for interpolation functions. Support for complex-valued inputs in many filtering and interpolation functions. New grid_mode option for scipy.ndimage.zoom to enable results consistent with scikit-image's rescale.
  • scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS library.
  • scipy.stats improvements including new distributions, a new test, and enhancements to existing distributions and tests

New features

scipy.special improvements

scipy.special now has improved support for 64-bit LAPACK backend

scipy.odr improvements

scipy.odr now has support for 64-bit integer BLAS

scipy.odr.ODR has gained an optional overwrite argument so that existing files may be overwritten.

scipy.integrate improvements

Some renames of functions with poor names were done, with the old names retained without being in the reference guide for backwards compatibility reasons: - integrate.simps was renamed to integrate.simpson - integrate.trapz was renamed to integrate.trapezoid - integrate.cumtrapz was renamed to integrate.cumulative_trapezoid

scipy.cluster improvements

scipy.cluster.hierarchy.DisjointSet has been added for incremental connectivity queries.

scipy.cluster.hierarchy.dendrogram return value now also includes leaf color information in leaves_color_list.

scipy.interpolate improvements

scipy.interpolate.interp1d has a new method nearest-up, similar to the existing method nearest but rounds half-integers up instead of down.

scipy.io improvements

Support has been added for reading arbitrary bit depth integer PCM WAV files from 1- to 32-bit, including the commonly-requested 24-bit depth.

scipy.linalg improvements

The new function scipy.linalg.matmul_toeplitz uses the FFT to compute the product of a Toeplitz matrix with another matrix.

scipy.linalg.sqrtm and scipy.linalg.logm have performance improvements thanks to additional Cython code.

Python LAPACK wrappers have been added for pptrf, pptrs, ppsv, pptri, and ppcon.

scipy.linalg.norm and the svd family of functions will now use 64-bit integer backends when available.

scipy.ndimage improvements

scipy.ndimage.convolve, scipy.ndimage.correlate and their 1d counterparts now accept both complex-valued images and/or complex-valued filter kernels. All convolution-based filters also now accept complex-valued inputs (e.g. gaussian_filter, uniform_filter, etc.).

Multiple fixes and enhancements to boundary handling were introduced to scipy.ndimage interpolation functions (i.e. affine_transform, geometric_transform, map_coordinates, rotate, shift, zoom).

A new boundary mode, grid-wrap was added which wraps images periodically, using a period equal to the shape of the input image grid. This is in contrast to the existing wrap mode which uses a period that is one sample smaller than the original signal extent along each dimension.

A long-standing bug in the reflect boundary condition has been fixed and the mode grid-mirror was introduced as a synonym for reflect.

A new boundary mode, grid-constant is now available. This is similar to the existing ndimage constant mode, but interpolation will still performed at coordinate values outside of the original image extent. This grid-constant mode is consistent with OpenCV's BORDER_CONSTANT mode and scikit-image's constant mode.

Spline pre-filtering (used internally by ndimage interpolation functions when order >= 2), now supports all boundary modes rather than always defaulting to mirror boundary conditions. The standalone functions spline_filter and spline_filter1d have analytical boundary conditions that match modes mirror, grid-wrap and reflect.

scipy.ndimage interpolation functions now accept complex-valued inputs. In this case, the interpolation is applied independently to the real and imaginary components.

The ndimage tutorials (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been updated with new figures to better clarify the exact behavior of all of the interpolation boundary modes.

scipy.ndimage.zoom now has a grid_mode option that changes the coordinate of the center of the first pixel along an axis from 0 to 0.5. This allows resizing in a manner that is consistent with the behavior of scikit-image's resize and rescale functions (and OpenCV's cv2.resize).

scipy.optimize improvements

scipy.optimize.linprog has fast, new methods for large, sparse problems from the HiGHS C++ library. method='highs-ds' uses a high performance dual revised simplex implementation (HSOL), method='highs-ipm' uses an interior-point method with crossover, and method='highs' chooses between the two automatically. These methods are typically much faster and often exceed the accuracy of other linprog methods, so we recommend explicitly specifying one of these three method values when using linprog.

scipy.optimize.quadratic_assignment has been added for approximate solution of the quadratic assignment problem.

scipy.optimize.linear_sum_assignment now has a substantially reduced overhead for small cost matrix sizes

scipy.optimize.least_squares has improved performance when the user provides the jacobian as a sparse jacobian already in csr_matrix format

scipy.optimize.linprog now has an rr_method argument for specification of the method used for redundancy handling, and a new method for this purpose is available based on the interpolative decomposition approach.

scipy.signal improvements

scipy.signal.gammatone has been added to design FIR or IIR filters that model the human auditory system.

scipy.signal.iircomb has been added to design IIR peaking/notching comb filters that can boost/attenuate a frequency from a signal.

scipy.signal.sosfilt performance has been improved to avoid some previously- observed slowdowns

scipy.signal.windows.taylor has been added--the Taylor window function is commonly used in radar digital signal processing

scipy.signal.gauss_spline now supports list type input for consistency with other related SciPy functions

scipy.signal.correlation_lags has been added to allow calculation of the lag/ displacement indices array for 1D cross-correlation.

scipy.sparse improvements

A solver for the minimum weight full matching problem for bipartite graphs, also known as the linear assignment problem, has been added in scipy.sparse.csgraph.min_weight_full_bipartite_matching. In particular, this provides functionality analogous to that of scipy.optimize.linear_sum_assignment, but with improved performance for sparse inputs, and the ability to handle inputs whose dense representations would not fit in memory.

The time complexity of scipy.sparse.block_diag has been improved dramatically from quadratic to linear.

scipy.sparse.linalg improvements

The vendored version of SuperLU has been updated

scipy.fft improvements

The vendored pocketfft library now supports compiling with ARM neon vector extensions and has improved thread pool behavior.

scipy.spatial improvements

The python implementation of KDTree has been dropped and KDTree is now implemented in terms of cKDTree. You can now expect cKDTree-like performance by default. This also means sys.setrecursionlimit no longer needs to be increased for querying large trees.

transform.Rotation has been updated with support for Modified Rodrigues Parameters alongside the existing rotation representations (PR gh-12667).

scipy.spatial.transform.Rotation has been partially cythonized, with some performance improvements observed

scipy.spatial.distance.cdist has improved performance with the minkowski metric, especially for p-norm values of 1 or 2.

scipy.stats improvements

New distributions have been added to scipy.stats:

  • The asymmetric Laplace continuous distribution has been added as scipy.stats.laplace_asymmetric.
  • The negative hypergeometric distribution has been added as scipy.stats.nhypergeom.
  • The multivariate t distribution has been added as scipy.stats.multivariate_t.
  • The multivariate hypergeometric distribution has been added as scipy.stats.multivariate_hypergeom.

The fit method has been overridden for several distributions (laplace, pareto, rayleigh, invgauss, logistic, gumbel_l, gumbel_r); they now use analytical, distribution-specific maximum likelihood estimation results for greater speed and accuracy than the generic (numerical optimization) implementation.

The one-sample Cramér-von Mises test has been added as scipy.stats.cramervonmises.

An option to compute one-sided p-values was added to scipy.stats.ttest_1samp, scipy.stats.ttest_ind_from_stats, scipy.stats.ttest_ind and scipy.stats.ttest_rel.

The function scipy.stats.kendalltau now has an option to compute Kendall's tau-c (also known as Stuart's tau-c), and support has been added for exact p-value calculations for sample sizes > 171.

stats.trapz was renamed to stats.trapezoid, with the former name retained as an alias for backwards compatibility reasons.

The function scipy.stats.linregress now includes the standard error of the intercept in its return value.

The _logpdf, _sf, and _isf methods have been added to scipy.stats.nakagami; _sf and _isf methods also added to scipy.stats.gumbel_r

The sf method has been added to scipy.stats.levy and scipy.stats.levy_l for improved precision.

scipy.stats.binned_statistic_dd performance improvements for the following computed statistics: max, min, median, and std.

We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of these improvements to scipy.stats.

Deprecated features

scipy.spatial changes

Calling KDTree.query with k=None to find all neighbours is deprecated. Use KDTree.query_ball_point instead.

distance.wminkowski was deprecated; use distance.minkowski and supply weights with the w keyword instead.

Backwards incompatible changes

scipy changes

Using scipy.fft as a function aliasing numpy.fft.fft was removed after being deprecated in SciPy 1.4.0. As a result, the scipy.fft submodule must be explicitly imported now, in line with other SciPy subpackages.

scipy.signal changes

The output of decimate, lfilter_zi, lfiltic, sos2tf, and sosfilt_zi have been changed to match numpy.result_type of their inputs.

The window function slepian was removed. It had been deprecated since SciPy 1.1.

scipy.spatial changes

cKDTree.query now returns 64-bit rather than 32-bit integers on Windows, making behaviour consistent between platforms (PR gh-12673).

scipy.stats changes

The frechet_l and frechet_r distributions were removed. They were deprecated since SciPy 1.0.

Other changes

setup_requires was removed from setup.py. This means that users invoking python setup.py install without having numpy already installed will now get an error, rather than having numpy installed for them via easy_install. This install method was always fragile and problematic, users are encouraged to use pip when installing from source.

  • Fixed a bug in scipy.optimize.dual_annealing accept_reject calculation that caused uphill jumps to be accepted less frequently.
  • The time required for (un)pickling of scipy.stats.rv_continuous, scipy.stats.rv_discrete, and scipy.stats.rv_frozen has been significantly reduced (gh12550). Inheriting subclasses should note that __setstate__ no longer calls __init__ upon unpickling.

Authors

  • @endolith
  • @vkk800
  • aditya +
  • George Bateman +
  • Christoph Baumgarten
  • Peter Bell
  • Tobias Biester +
  • Keaton J. Burns +
  • Evgeni Burovski
  • Rüdiger Busche +
  • Matthias Bussonnier
  • Dominic C +
  • Corallus Caninus +
  • CJ Carey
  • Thomas A Caswell
  • chapochn +
  • Lucía Cheung
  • Zach Colbert +
  • Coloquinte +
  • Yannick Copin +
  • Devin Crowley +
  • Terry Davis +
  • Michaël Defferrard +
  • devonwp +
  • Didier +
  • divenex +
  • Thomas Duvernay +
  • Eoghan O'Connell +
  • Gökçen Eraslan
  • Kristian Eschenburg +
  • Ralf Gommers
  • Thomas Grainger +
  • GreatV +
  • Gregory Gundersen +
  • h-vetinari +
  • Matt Haberland
  • Mark Harfouche +
  • He He +
  • Alex Henrie
  • Chun-Ming Huang +
  • Martin James McHugh III +
  • Alex Izvorski +
  • Joey +
  • ST John +
  • Jonas Jonker +
  • Julius Bier Kirkegaard
  • Marcin Konowalczyk +
  • Konrad0
  • Sam Van Kooten +
  • Sergey Koposov +
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Loïc Estève
  • Jean-Luc Margot +
  • MarkusKoebis +
  • Nikolay Mayorov
  • G. D. McBain
  • Andrew McCluskey +
  • Nicholas McKibben
  • Sturla Molden
  • Denali Molitor +
  • Eric Moore
  • Shashaank N +
  • Prashanth Nadukandi +
  • nbelakovski +
  • Andrew Nelson
  • Nick +
  • Nikola Forró +
  • odidev
  • ofirr +
  • Sambit Panda
  • Dima Pasechnik
  • Tirth Patel +
  • Paweł Redzyński +
  • Vladimir Philipenko +
  • Philipp Thölke +
  • Ilhan Polat
  • Eugene Prilepin +
  • Vladyslav Rachek
  • Ram Rachum +
  • Tyler Reddy
  • Martin Reinecke +
  • Simon Segerblom Rex +
  • Lucas Roberts
  • Benjamin Rowell +
  • Eli Rykoff +
  • Atsushi Sakai
  • Moritz Schulte +
  • Daniel B. Smith
  • Steve Smith +
  • Jan Soedingrekso +
  • Victor Stinner +
  • Jose Storopoli +
  • Diana Sukhoverkhova +
  • Søren Fuglede Jørgensen
  • taoky +
  • Mike Taves +
  • Ian Thomas +
  • Will Tirone +
  • Frank Torres +
  • Seth Troisi
  • Ronald van Elburg +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Saul Ivan Rivas Vega +
  • Pauli Virtanen
  • Jan Vleeshouwers
  • Samuel Wallan
  • Warren Weckesser
  • Ben West +
  • Eric Wieser
  • WillTirone +
  • Levi John Wolf +
  • Zhiqing Xiao
  • Rory Yorke +
  • Yun Wang (Maigo) +
  • Egor Zemlyanoy +
  • ZhihuiChen0903 +
  • Jacob Zhong +

A total of 121 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.5.4

SciPy 1.5.4 Release Notes

SciPy 1.5.4 is a bug-fix release with no new features compared to 1.5.3. Importantly, wheels are now available for Python 3.9 and a more complete fix has been applied for issues building with XCode 12.

Authors

  • Peter Bell
  • CJ Carey
  • Andrew McCluskey +
  • Andrew Nelson
  • Tyler Reddy
  • Eli Rykoff +
  • Ian Thomas +

A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.5.3

SciPy 1.5.3 Release Notes

SciPy 1.5.3 is a bug-fix release with no new features compared to 1.5.2. In particular, Linux ARM64 wheels are now available and a compatibility issue with XCode 12 has been fixed.

Authors

  • Peter Bell
  • CJ Carey
  • Thomas Duvernay +
  • Gregory Lee
  • Eric Moore
  • odidev
  • Dima Pasechnik
  • Tyler Reddy
  • Simon Segerblom Rex +
  • Daniel B. Smith
  • Will Tirone +
  • Warren Weckesser

A total of 12 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 5 years ago

scipy - SciPy 1.5.2

SciPy 1.5.2 Release Notes

SciPy 1.5.2 is a bug-fix release with no new features compared to 1.5.1.

Authors

  • Peter Bell
  • Tobias Biester +
  • Evgeni Burovski
  • Thomas A Caswell
  • Ralf Gommers
  • Sturla Molden
  • Andrew Nelson
  • ofirr +
  • Sambit Panda
  • Ilhan Polat
  • Tyler Reddy
  • Atsushi Sakai
  • Pauli Virtanen

A total of 13 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 6 years ago

scipy - SciPy 1.5.1

SciPy 1.5.1 Release Notes

SciPy 1.5.1 is a bug-fix release with no new features compared to 1.5.0. In particular, an issue where DLL loading can fail for SciPy wheels on Windows with Python 3.6 has been fixed.

Authors

  • Peter Bell
  • Loïc Estève
  • Philipp Thölke +
  • Tyler Reddy
  • Paul van Mulbregt
  • Pauli Virtanen
  • Warren Weckesser

A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 6 years ago

scipy - SciPy 1.5.0

SciPy 1.5.0 Release Notes

SciPy 1.5.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.5.x branch, and on adding new features on the master branch.

This release requires Python 3.6+ and NumPy 1.14.5 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • wrappers for more than a dozen new LAPACK routines are now available in scipy.linalg.lapack
  • Improved support for leveraging 64-bit integer size from linear algebra backends
  • addition of the probability distribution for two-sided one-sample Kolmogorov-Smirnov tests

New features

scipy.cluster improvements

Initialization of scipy.cluster.vq.kmeans2 using minit="++" had a quadratic complexity in the number of samples. It has been improved, resulting in a much faster initialization with quasi-linear complexity.

scipy.cluster.hierarchy.dendrogram now respects the matplotlib color palette

scipy.fft improvements

A new keyword-only argument plan is added to all FFT functions in this module. It is reserved for passing in a precomputed plan from libraries providing a FFT backend (such as PyFFTW and mkl-fft), and it is currently not used in SciPy.

scipy.integrate improvements

scipy.interpolate improvements

scipy.io improvements

scipy.io.wavfile error messages are more explicit about what's wrong, and extraneous bytes at the ends of files are ignored instead of raising an error when the data has successfully been read.

scipy.io.loadmat gained a simplify_cells parameter, which if set to True simplifies the structure of the return value if the .mat file contains cell arrays.

pathlib.Path objects are now supported in scipy.io Matrix Market I/O functions

scipy.linalg improvements

scipy.linalg.eigh has been improved. Now various LAPACK drivers can be selected at will and also subsets of eigenvalues can be requested via subset_by_value keyword. Another keyword subset_by_index is introduced. Keywords turbo and eigvals are deprecated.

Similarly, standard and generalized Hermitian eigenvalue LAPACK routines ?<sy/he>evx are added and existing ones now have full _lwork counterparts.

Wrappers for the following LAPACK routines have been added to scipy.linalg.lapack:

  • ?getc2: computes the LU factorization of a general matrix with complete pivoting
  • ?gesc2: solves a linear system given an LU factorization from ?getc2
  • ?gejsv: computes the singular value decomposition of a general matrix with higher accuracy calculation of tiny singular values and their corresponding singular vectors
  • ?geqrfp: computes the QR factorization of a general matrix with non-negative elements on the diagonal of R
  • ?gtsvx: solves a linear system with general tridiagonal matrix
  • ?gttrf: computes the LU factorization of a tridiagonal matrix
  • ?gttrs: solves a linear system given an LU factorization from ?gttrf
  • ?ptsvx: solves a linear system with symmetric positive definite tridiagonal matrix
  • ?pttrf: computes the LU factorization of a symmetric positive definite tridiagonal matrix
  • ?pttrs: solves a linear system given an LU factorization from ?pttrf
  • ?pteqr: computes the eigenvectors and eigenvalues of a positive definite tridiagonal matrix
  • ?tbtrs: solves a linear system with a triangular banded matrix
  • ?csd: computes the Cosine Sine decomposition of an orthogonal/unitary matrix

Generalized QR factorization routines (?geqrf) now have full _lwork counterparts.

scipy.linalg.cossin Cosine Sine decomposition of unitary matrices has been added.

The function scipy.linalg.khatri_rao, which computes the Khatri-Rao product, was added.

The new function scipy.linalg.convolution_matrix constructs the Toeplitz matrix representing one-dimensional convolution.

scipy.ndimage improvements

scipy.optimize improvements

The finite difference numerical differentiation used in various minimize methods that use gradients has several new features:

  • 2-point, 3-point, or complex step finite differences can be used. Previously only a 2-step finite difference was available.
  • There is now the possibility to use a relative step size, previously only an absolute step size was available.
  • If the minimize method uses bounds the numerical differentiation strictly obeys those limits.
  • The numerical differentiation machinery now makes use of a simple cache, which in some cases can reduce the number of function evaluations.
  • minimize's method= 'powell' now supports simple bound constraints

There have been several improvements to scipy.optimize.linprog:

  • The linprog benchmark suite has been expanded considerably.
  • linprog's dense pivot-based redundancy removal routine and sparse presolve are faster
  • When scikit-sparse is available, solving sparse problems with method='interior-point' is faster

The caching of values when optimizing a function returning both value and gradient together has been improved, avoiding repeated function evaluations when using a HessianApproximation such as BFGS.

differential_evolution can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

scipy.signal improvements

A new optional argument include_nyquist is added to freqz functions in this module. It is used for including the last frequency (Nyquist frequency).

scipy.signal.find_peaks_cwt now accepts a window_size parameter for the size of the window used to calculate the noise floor.

scipy.sparse improvements

Outer indexing is now faster when using a 2d column vector to select column indices.

scipy.sparse.lil.tocsr is faster

Fixed/improved comparisons between pydata sparse arrays and sparse matrices

BSR format sparse multiplication performance has been improved.

scipy.sparse.linalg.LinearOperator has gained the new ndim class attribute

scipy.spatial improvements

scipy.spatial.geometric_slerp has been added to enable geometric spherical linear interpolation on an n-sphere

scipy.spatial.SphericalVoronoi now supports calculation of region areas in 2D and 3D cases

The tree building algorithm used by cKDTree has improved from quadratic worst case time complexity to loglinear. Benchmarks are also now available for building and querying of balanced/unbalanced kd-trees.

scipy.special improvements

The following functions now have Cython interfaces in cython_special:

  • scipy.special.erfinv
  • scipy.special.erfcinv
  • scipy.special.spherical_jn
  • scipy.special.spherical_yn
  • scipy.special.spherical_in
  • scipy.special.spherical_kn

scipy.special.log_softmax has been added to calculate the logarithm of softmax function. It provides better accuracy than log(scipy.special.softmax(x)) for inputs that make softmax saturate.

scipy.stats improvements

The function for generating random samples in scipy.stats.dlaplace has been improved. The new function is approximately twice as fast with a memory footprint reduction between 25 % and 60 % (see gh-11069).

scipy.stats functions that accept a seed for reproducible calculations using random number generation (e.g. random variates from distributions) can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

The axis parameter was added to scipy.stats.rankdata. This allows slices of an array along the given axis to be ranked independently.

The axis parameter was added to scipy.stats.f_oneway, allowing it to compute multiple one-way ANOVA tests for data stored in n-dimensional arrays. The performance of f_oneway was also improved for some cases.

The PDF and CDF methods for stats.geninvgauss are now significantly faster as the numerical integration to calculate the CDF uses a Cython based LowLevelCallable.

Moments of the normal distribution (scipy.stats.norm) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Moments and entropy trapezoidal distribution (scipy.stats.trapz) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Methods of the truncated normal distribution (scipy.stats.truncnorm), especially _rvs, are significantly faster after a complete rewrite.

The fit method of the Laplace distribution, scipy.stats.laplace, now uses the analytical formulas for the maximum likelihood estimates of the parameters.

Generation of random variates is now thread safe for all SciPy distributions. 3rd-party distributions may need to modify the signature of the _rvs() method to conform to _rvs(self, ..., size=None, random_state=None). (A one-time VisibleDeprecationWarning is emitted when using non-conformant distributions.)

The Kolmogorov-Smirnov two-sided test statistic distribution (scipy.stats.kstwo) was added. Calculates the distribution of the K-S two-sided statistic D_n for a sample of size n, using a mixture of exact and asymptotic algorithms.

The new function median_abs_deviation replaces the deprecated median_absolute_deviation.

The wilcoxon function now computes the p-value for Wilcoxon's signed rank test using the exact distribution for inputs up to length 25. The function has a new mode parameter to specify how the p-value is to be computed. The default is "auto", which uses the exact distribution for inputs up to length 25 and the normal approximation for larger inputs.

Added a new Cython-based implementation to evaluate guassian kernel estimates, which should improve the performance of gaussian_kde

The winsorize function now has a nan_policy argument for refined handling of nan input values.

The binned_statistic_dd function with statistic="std" performance was improved by ~4x.

scipy.stats.kstest(rvs, cdf,...) now handles both one-sample and two-sample testing. The one-sample variation uses scipy.stats.ksone (or scipy.stats.kstwo with back off to scipy.stats.kstwobign) to calculate the p-value. The two-sample variation, invoked if cdf is array_like, uses an algorithm described by Hodges to compute the probability directly, only backing off to scipy.stats.kstwo in case of overflow. The result in both cases is more accurate p-values, especially for two-sample testing with smaller (or quite different) sizes.

scipy.stats.maxwell performance improvements include a 20 % speed up for fit()and 5 % forpdf()`

scipy.stats.shapiro and scipy.stats.jarque_bera now return a named tuple for greater consistency with other stats functions

Deprecated features

scipy deprecations

scipy.special changes

The bdtr, bdtrc, and bdtri functions are deprecating non-negative non-integral n arguments.

scipy.stats changes

The function median_absolute_deviation is deprecated. Use median_abs_deviation instead.

The use of the string "raw" with the scale parameter of iqr is deprecated. Use scale=1 instead.

Backwards incompatible changes

scipy.interpolate changes

scipy.linalg changes

The output signatures of ?syevr, ?heevr have been changed from w, v, info to w, v, m, isuppz, info

The order of output arguments w, v of <sy/he>{gv, gvd, gvx} is swapped.

scipy.signal changes

The output length of scipy.signal.upfirdn has been corrected, resulting outputs may now be shorter for some combinations of up/down ratios and input signal and filter lengths.

scipy.signal.resample now supports a domain keyword argument for specification of time or frequency domain input.

scipy.stats changes

Other changes

Improved support for leveraging 64-bit integer size from linear algebra backends in several parts of the SciPy codebase.

Shims designed to ensure the compatibility of SciPy with Python 2.7 have now been removed.

Many warnings due to unused imports and unused assignments have been addressed.

Many usage examples were added to function docstrings, and many input validations and intuitive exception messages have been added throughout the codebase.

Early stage adoption of type annotations in a few parts of the codebase

Authors

  • @endolith
  • Hameer Abbasi
  • ADmitri +
  • Wesley Alves +
  • Berkay Antmen +
  • Sylwester Arabas +
  • Arne Küderle +
  • Christoph Baumgarten
  • Peter Bell
  • Felix Berkenkamp
  • Jordão Bragantini +
  • Clemens Brunner +
  • Evgeni Burovski
  • Matthias Bussonnier +
  • CJ Carey
  • Derrick Chambers +
  • Leander Claes +
  • Christian Clauss
  • Luigi F. Cruz +
  • dankleeman
  • Andras Deak
  • Milad Sadeghi DM +
  • jeremie du boisberranger +
  • Stefan Endres
  • Malte Esders +
  • Leo Fang +
  • felixhekhorn +
  • Isuru Fernando
  • Andrew Fowlie
  • Lakshay Garg +
  • Gaurav Gijare +
  • Ralf Gommers
  • Emmanuelle Gouillart +
  • Kevin Green +
  • Martin Grignard +
  • Maja Gwozdz
  • Sturla Molden
  • gyu-don +
  • Matt Haberland
  • hakeemo +
  • Charles Harris
  • Alex Henrie
  • Santi Hernandez +
  • William Hickman +
  • Till Hoffmann +
  • Joseph T. Iosue +
  • Anany Shrey Jain
  • Jakob Jakobson
  • Charles Jekel +
  • Julien Jerphanion +
  • Jiacheng-Liu +
  • Christoph Kecht +
  • Paul Kienzle +
  • Reidar Kind +
  • Dmitry E. Kislov +
  • Konrad +
  • Konrad0
  • Takuya KOUMURA +
  • Krzysztof Pióro
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory Lee +
  • Gregory R. Lee
  • Chelsea Liu
  • Cong Ma +
  • Kevin Mader +
  • Maja Gwóźdź +
  • Alex Marvin +
  • Matthias Kümmerer
  • Nikolay Mayorov
  • Mazay0 +
  • G. D. McBain
  • Nicholas McKibben +
  • Sabrina J. Mielke +
  • Sebastian J. Mielke +
  • Miloš Komarčević +
  • Shubham Mishra +
  • Santiago M. Mola +
  • Grzegorz Mrukwa +
  • Peyton Murray
  • Andrew Nelson
  • Nico Schlömer
  • nwjenkins +
  • odidev +
  • Sambit Panda
  • Vikas Pandey +
  • Rick Paris +
  • Harshal Prakash Patankar +
  • Balint Pato +
  • Matti Picus
  • Ilhan Polat
  • poom +
  • Siddhesh Poyarekar
  • Vladyslav Rachek +
  • Bharat Raghunathan
  • Manu Rajput +
  • Tyler Reddy
  • Andrew Reed +
  • Lucas Roberts
  • Ariel Rokem
  • Heshy Roskes
  • Matt Ruffalo
  • Atsushi Sakai +
  • Benjamin Santos +
  • Christoph Schock +
  • Lisa Schwetlick +
  • Chris Simpson +
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • Kale-ab Tessera +
  • Seth Troisi +
  • Robert Uhl +
  • Paul van Mulbregt
  • Vasiliy +
  • Isaac Virshup +
  • Pauli Virtanen
  • Shakthi Visagan +
  • Jan Vleeshouwers +
  • Sam Wallan +
  • Lijun Wang +
  • Warren Weckesser
  • Richard Weiss +
  • wenhui-prudencemed +
  • Eric Wieser
  • Josh Wilson
  • James Wright +
  • Ruslan Yevdokymov +
  • Ziyao Zhang +

A total of 129 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 6 years ago

scipy - SciPy 1.5.0rc2

SciPy 1.5.0 Release Notes

Note Scipy 1.5.0 is not released yet!

SciPy 1.5.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.5.x branch, and on adding new features on the master branch.

This release requires Python 3.6+ and NumPy 1.14.5 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • wrappers for more than a dozen new LAPACK routines are now available in scipy.linalg.lapack
  • Improved support for leveraging 64-bit integer size from linear algebra backends
  • addition of the probability distribution for two-sided one-sample Kolmogorov-Smirnov tests

New features

scipy.cluster improvements

Initialization of scipy.cluster.vq.kmeans2 using minit="++" had a quadratic complexity in the number of samples. It has been improved, resulting in a much faster initialization with quasi-linear complexity.

scipy.cluster.hierarchy.dendrogram now respects the matplotlib color palette

scipy.fft improvements

A new keyword-only argument plan is added to all FFT functions in this module. It is reserved for passing in a precomputed plan from libraries providing a FFT backend (such as PyFFTW and mkl-fft), and it is currently not used in SciPy.

scipy.integrate improvements

scipy.interpolate improvements

scipy.io improvements

scipy.io.wavfile error messages are more explicit about what's wrong, and extraneous bytes at the ends of files are ignored instead of raising an error when the data has successfully been read.

scipy.io.loadmat gained a simplify_cells parameter, which if set to True simplifies the structure of the return value if the .mat file contains cell arrays.

pathlib.Path objects are now supported in scipy.io Matrix Market I/O functions

scipy.linalg improvements

scipy.linalg.eigh has been improved. Now various LAPACK drivers can be selected at will and also subsets of eigenvalues can be requested via subset_by_value keyword. Another keyword subset_by_index is introduced. Keywords turbo and eigvals are deprecated.

Similarly, standard and generalized Hermitian eigenvalue LAPACK routines ?<sy/he>evx are added and existing ones now have full _lwork counterparts.

Wrappers for the following LAPACK routines have been added to scipy.linalg.lapack:

  • ?getc2: computes the LU factorization of a general matrix with complete pivoting
  • ?gesc2: solves a linear system given an LU factorization from ?getc2
  • ?gejsv: computes the singular value decomposition of a general matrix with higher accuracy calculation of tiny singular values and their corresponding singular vectors
  • ?geqrfp: computes the QR factorization of a general matrix with non-negative elements on the diagonal of R
  • ?gtsvx: solves a linear system with general tridiagonal matrix
  • ?gttrf: computes the LU factorization of a tridiagonal matrix
  • ?gttrs: solves a linear system given an LU factorization from ?gttrf
  • ?ptsvx: solves a linear system with symmetric positive definite tridiagonal matrix
  • ?pttrf: computes the LU factorization of a symmetric positive definite tridiagonal matrix
  • ?pttrs: solves a linear system given an LU factorization from ?pttrf
  • ?pteqr: computes the eigenvectors and eigenvalues of a positive definite tridiagonal matrix
  • ?tbtrs: solves a linear system with a triangular banded matrix
  • ?csd: computes the Cosine Sine decomposition of an orthogonal/unitary matrix

Generalized QR factorization routines (?geqrf) now have full _lwork counterparts.

scipy.linalg.cossin Cosine Sine decomposition of unitary matrices has been added.

The function scipy.linalg.khatri_rao, which computes the Khatri-Rao product, was added.

The new function scipy.linalg.convolution_matrix constructs the Toeplitz matrix representing one-dimensional convolution.

scipy.ndimage improvements

scipy.optimize improvements

The finite difference numerical differentiation used in various minimize methods that use gradients has several new features:

  • 2-point, 3-point, or complex step finite differences can be used. Previously only a 2-step finite difference was available.
  • There is now the possibility to use a relative step size, previously only an absolute step size was available.
  • If the minimize method uses bounds the numerical differentiation strictly obeys those limits.
  • The numerical differentiation machinery now makes use of a simple cache, which in some cases can reduce the number of function evaluations.
  • minimize's method= 'powell' now supports simple bound constraints

There have been several improvements to scipy.optimize.linprog:

  • The linprog benchmark suite has been expanded considerably.
  • linprog's dense pivot-based redundancy removal routine and sparse presolve are faster
  • When scikit-sparse is available, solving sparse problems with method='interior-point' is faster

The caching of values when optimizing a function returning both value and gradient together has been improved, avoiding repeated function evaluations when using a HessianApproximation such as BFGS.

differential_evolution can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

scipy.signal improvements

A new optional argument include_nyquist is added to freqz functions in this module. It is used for including the last frequency (Nyquist frequency).

scipy.signal.find_peaks_cwt now accepts a window_size parameter for the size of the window used to calculate the noise floor.

scipy.sparse improvements

Outer indexing is now faster when using a 2d column vector to select column indices.

scipy.sparse.lil.tocsr is faster

Fixed/improved comparisons between pydata sparse arrays and sparse matrices

BSR format sparse multiplication performance has been improved.

scipy.sparse.linalg.LinearOperator has gained the new ndim class attribute

scipy.spatial improvements

scipy.spatial.geometric_slerp has been added to enable geometric spherical linear interpolation on an n-sphere

scipy.spatial.SphericalVoronoi now supports calculation of region areas in 2D and 3D cases

The tree building algorithm used by cKDTree has improved from quadratic worst case time complexity to loglinear. Benchmarks are also now available for building and querying of balanced/unbalanced kd-trees.

scipy.special improvements

The following functions now have Cython interfaces in cython_special:

  • scipy.special.erfinv
  • scipy.special.erfcinv
  • scipy.special.spherical_jn
  • scipy.special.spherical_yn
  • scipy.special.spherical_in
  • scipy.special.spherical_kn

scipy.special.log_softmax has been added to calculate the logarithm of softmax function. It provides better accuracy than log(scipy.special.softmax(x)) for inputs that make softmax saturate.

scipy.stats improvements

The function for generating random samples in scipy.stats.dlaplace has been improved. The new function is approximately twice as fast with a memory footprint reduction between 25 % and 60 % (see gh-11069).

scipy.stats functions that accept a seed for reproducible calculations using random number generation (e.g. random variates from distributions) can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

The axis parameter was added to scipy.stats.rankdata. This allows slices of an array along the given axis to be ranked independently.

The axis parameter was added to scipy.stats.f_oneway, allowing it to compute multiple one-way ANOVA tests for data stored in n-dimensional arrays. The performance of f_oneway was also improved for some cases.

The PDF and CDF methods for stats.geninvgauss are now significantly faster as the numerical integration to calculate the CDF uses a Cython based LowLevelCallable.

Moments of the normal distribution (scipy.stats.norm) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Moments and entropy trapezoidal distribution (scipy.stats.trapz) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Methods of the truncated normal distribution (scipy.stats.truncnorm), especially _rvs, are significantly faster after a complete rewrite.

The fit method of the Laplace distribution, scipy.stats.laplace, now uses the analytical formulas for the maximum likelihood estimates of the parameters.

Generation of random variates is now thread safe for all SciPy distributions. 3rd-party distributions may need to modify the signature of the _rvs() method to conform to _rvs(self, ..., size=None, random_state=None). (A one-time VisibleDeprecationWarning is emitted when using non-conformant distributions.)

The Kolmogorov-Smirnov two-sided test statistic distribution (scipy.stats.kstwo) was added. Calculates the distribution of the K-S two-sided statistic D_n for a sample of size n, using a mixture of exact and asymptotic algorithms.

The new function median_abs_deviation replaces the deprecated median_absolute_deviation.

The wilcoxon function now computes the p-value for Wilcoxon's signed rank test using the exact distribution for inputs up to length 25. The function has a new mode parameter to specify how the p-value is to be computed. The default is "auto", which uses the exact distribution for inputs up to length 25 and the normal approximation for larger inputs.

Added a new Cython-based implementation to evaluate guassian kernel estimates, which should improve the performance of gaussian_kde

The winsorize function now has a nan_policy argument for refined handling of nan input values.

The binned_statistic_dd function with statistic="std" performance was improved by ~4x.

scipy.stats.kstest(rvs, cdf,...) now handles both one-sample and two-sample testing. The one-sample variation uses scipy.stats.ksone (or scipy.stats.kstwo with back off to scipy.stats.kstwobign) to calculate the p-value. The two-sample variation, invoked if cdf is array_like, uses an algorithm described by Hodges to compute the probability directly, only backing off to scipy.stats.kstwo in case of overflow. The result in both cases is more accurate p-values, especially for two-sample testing with smaller (or quite different) sizes.

scipy.stats.maxwell performance improvements include a 20 % speed up for fit()and 5 % forpdf()`

scipy.stats.shapiro and scipy.stats.jarque_bera now return a named tuple for greater consistency with other stats functions

Deprecated features

scipy deprecations

scipy.special changes

The bdtr, bdtrc, and bdtri functions are deprecating non-negative non-integral n arguments.

scipy.stats changes

The function median_absolute_deviation is deprecated. Use median_abs_deviation instead.

The use of the string "raw" with the scale parameter of iqr is deprecated. Use scale=1 instead.

Backwards incompatible changes

scipy.interpolate changes

scipy.linalg changes

The output signatures of ?syevr, ?heevr have been changed from w, v, info to w, v, m, isuppz, info

The order of output arguments w, v of <sy/he>{gv, gvd, gvx} is swapped.

scipy.signal changes

The output length of scipy.signal.upfirdn has been corrected, resulting outputs may now be shorter for some combinations of up/down ratios and input signal and filter lengths.

scipy.signal.resample now supports a domain keyword argument for specification of time or frequency domain input.

scipy.stats changes

Other changes

Improved support for leveraging 64-bit integer size from linear algebra backends in several parts of the SciPy codebase.

Shims designed to ensure the compatibility of SciPy with Python 2.7 have now been removed.

Many warnings due to unused imports and unused assignments have been addressed.

Many usage examples were added to function docstrings, and many input validations and intuitive exception messages have been added throughout the codebase.

Early stage adoption of type annotations in a few parts of the codebase

Authors

  • @endolith
  • Hameer Abbasi
  • ADmitri +
  • Wesley Alves +
  • Berkay Antmen +
  • Sylwester Arabas +
  • Arne Küderle +
  • Christoph Baumgarten
  • Peter Bell
  • Felix Berkenkamp
  • Jordão Bragantini +
  • Clemens Brunner +
  • Evgeni Burovski
  • Matthias Bussonnier +
  • CJ Carey
  • Derrick Chambers +
  • Leander Claes +
  • Christian Clauss
  • Luigi F. Cruz +
  • dankleeman
  • Andras Deak
  • Milad Sadeghi DM +
  • jeremie du boisberranger +
  • Stefan Endres
  • Malte Esders +
  • Leo Fang +
  • felixhekhorn +
  • Isuru Fernando
  • Andrew Fowlie
  • Lakshay Garg +
  • Gaurav Gijare +
  • Ralf Gommers
  • Emmanuelle Gouillart +
  • Kevin Green +
  • Martin Grignard +
  • Maja Gwozdz
  • Sturla Molden
  • gyu-don +
  • Matt Haberland
  • hakeemo +
  • Charles Harris
  • Alex Henrie
  • Santi Hernandez +
  • William Hickman +
  • Till Hoffmann +
  • Joseph T. Iosue +
  • Anany Shrey Jain
  • Jakob Jakobson
  • Charles Jekel +
  • Julien Jerphanion +
  • Jiacheng-Liu +
  • Christoph Kecht +
  • Paul Kienzle +
  • Reidar Kind +
  • Dmitry E. Kislov +
  • Konrad +
  • Konrad0
  • Takuya KOUMURA +
  • Krzysztof Pióro
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory Lee +
  • Gregory R. Lee
  • Chelsea Liu
  • Cong Ma +
  • Kevin Mader +
  • Maja Gwóźdź +
  • Alex Marvin +
  • Matthias Kümmerer
  • Nikolay Mayorov
  • Mazay0 +
  • G. D. McBain
  • Nicholas McKibben +
  • Sabrina J. Mielke +
  • Sebastian J. Mielke +
  • Miloš Komarčević +
  • Shubham Mishra +
  • Santiago M. Mola +
  • Grzegorz Mrukwa +
  • Peyton Murray
  • Andrew Nelson
  • Nico Schlömer
  • nwjenkins +
  • odidev +
  • Sambit Panda
  • Vikas Pandey +
  • Rick Paris +
  • Harshal Prakash Patankar +
  • Balint Pato +
  • Matti Picus
  • Ilhan Polat
  • poom +
  • Siddhesh Poyarekar
  • Vladyslav Rachek +
  • Bharat Raghunathan
  • Manu Rajput +
  • Tyler Reddy
  • Andrew Reed +
  • Lucas Roberts
  • Ariel Rokem
  • Heshy Roskes
  • Matt Ruffalo
  • Atsushi Sakai +
  • Benjamin Santos +
  • Christoph Schock +
  • Lisa Schwetlick +
  • Chris Simpson +
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • Kale-ab Tessera +
  • Seth Troisi +
  • Robert Uhl +
  • Paul van Mulbregt
  • Vasiliy +
  • Isaac Virshup +
  • Pauli Virtanen
  • Shakthi Visagan +
  • Jan Vleeshouwers +
  • Sam Wallan +
  • Lijun Wang +
  • Warren Weckesser
  • Richard Weiss +
  • wenhui-prudencemed +
  • Eric Wieser
  • Josh Wilson
  • James Wright +
  • Ruslan Yevdokymov +
  • Ziyao Zhang +

A total of 129 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 6 years ago

scipy - SciPy 1.5.0rc1

SciPy 1.5.0 Release Notes

Note: Scipy 1.5.0 is not released yet!

SciPy 1.5.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.5.x branch, and on adding new features on the master branch.

This release requires Python 3.6+ and NumPy 1.14.5 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • wrappers for more than a dozen new LAPACK routines are now available in scipy.linalg.lapack
  • Improved support for leveraging 64-bit integer size from linear algebra backends
  • addition of the probability distribution for two-sided one-sample Kolmogorov-Smirnov tests

New features

scipy.cluster improvements

Initialization of scipy.cluster.vq.kmeans2 using minit="++" had a quadratic complexity in the number of samples. It has been improved, resulting in a much faster initialization with quasi-linear complexity.

scipy.cluster.hierarchy.dendrogram now respects the matplotlib color palette

scipy.fft improvements

A new keyword-only argument plan is added to all FFT functions in this module. It is reserved for passing in a precomputed plan from libraries providing a FFT backend (such as PyFFTW and mkl-fft), and it is currently not used in SciPy.

scipy.integrate improvements

scipy.interpolate improvements

scipy.io improvements

scipy.io.wavfile error messages are more explicit about what's wrong, and extraneous bytes at the ends of files are ignored instead of raising an error when the data has successfully been read.

scipy.io.loadmat gained a simplify_cells parameter, which if set to True simplifies the structure of the return value if the .mat file contains cell arrays.

pathlib.Path objects are now supported in scipy.io Matrix Market I/O functions

scipy.linalg improvements

scipy.linalg.eigh has been improved. Now various LAPACK drivers can be selected at will and also subsets of eigenvalues can be requested via subset_by_value keyword. Another keyword subset_by_index is introduced. Keywords turbo and eigvals are deprecated.

Similarly, standard and generalized Hermitian eigenvalue LAPACK routines ?<sy/he>evx are added and existing ones now have full _lwork counterparts.

Wrappers for the following LAPACK routines have been added to scipy.linalg.lapack:

  • ?getc2: computes the LU factorization of a general matrix with complete pivoting
  • ?gesc2: solves a linear system given an LU factorization from ?getc2
  • ?gejsv: computes the singular value decomposition of a general matrix with higher accuracy calculation of tiny singular values and their corresponding singular vectors
  • ?geqrfp: computes the QR factorization of a general matrix with non-negative elements on the diagonal of R
  • ?gtsvx: solves a linear system with general tridiagonal matrix
  • ?gttrf: computes the LU factorization of a tridiagonal matrix
  • ?gttrs: solves a linear system given an LU factorization from ?gttrf
  • ?ptsvx: solves a linear system with symmetric positive definite tridiagonal matrix
  • ?pttrf: computes the LU factorization of a symmetric positive definite tridiagonal matrix
  • ?pttrs: solves a linear system given an LU factorization from ?pttrf
  • ?pteqr: computes the eigenvectors and eigenvalues of a positive definite tridiagonal matrix
  • ?tbtrs: solves a linear system with a triangular banded matrix
  • ?csd: computes the Cosine Sine decomposition of an orthogonal/unitary matrix

Generalized QR factorization routines (?geqrf) now have full _lwork counterparts.

scipy.linalg.cossin Cosine Sine decomposition of unitary matrices has been added.

The function scipy.linalg.khatri_rao, which computes the Khatri-Rao product, was added.

The new function scipy.linalg.convolution_matrix constructs the Toeplitz matrix representing one-dimensional convolution.

scipy.ndimage improvements

scipy.optimize improvements

The finite difference numerical differentiation used in various minimize methods that use gradients has several new features:

  • 2-point, 3-point, or complex step finite differences can be used. Previously only a 2-step finite difference was available.
  • There is now the possibility to use a relative step size, previously only an absolute step size was available.
  • If the minimize method uses bounds the numerical differentiation strictly obeys those limits.
  • The numerical differentiation machinery now makes use of a simple cache, which in some cases can reduce the number of function evaluations.
  • minimize's method= 'powell' now supports simple bound constraints

There have been several improvements to scipy.optimize.linprog:

  • The linprog benchmark suite has been expanded considerably.
  • linprog's dense pivot-based redundancy removal routine and sparse presolve are faster
  • When scikit-sparse is available, solving sparse problems with method='interior-point' is faster

The caching of values when optimizing a function returning both value and gradient together has been improved, avoiding repeated function evaluations when using a HessianApproximation such as BFGS.

differential_evolution can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

scipy.signal improvements

A new optional argument include_nyquist is added to freqz functions in this module. It is used for including the last frequency (Nyquist frequency).

scipy.signal.find_peaks_cwt now accepts a window_size parameter for the size of the window used to calculate the noise floor.

scipy.sparse improvements

Outer indexing is now faster when using a 2d column vector to select column indices.

scipy.sparse.lil.tocsr is faster

Fixed/improved comparisons between pydata sparse arrays and sparse matrices

BSR format sparse multiplication performance has been improved.

scipy.sparse.linalg.LinearOperator has gained the new ndim class attribute

scipy.spatial improvements

scipy.spatial.geometric_slerp has been added to enable geometric spherical linear interpolation on an n-sphere

scipy.spatial.SphericalVoronoi now supports calculation of region areas in 2D and 3D cases

The tree building algorithm used by cKDTree has improved from quadratic worst case time complexity to loglinear. Benchmarks are also now available for building and querying of balanced/unbalanced kd-trees.

scipy.special improvements

The following functions now have Cython interfaces in cython_special:

  • scipy.special.erfinv
  • scipy.special.erfcinv
  • scipy.special.spherical_jn
  • scipy.special.spherical_yn
  • scipy.special.spherical_in
  • scipy.special.spherical_kn

scipy.special.log_softmax has been added to calculate the logarithm of softmax function. It provides better accuracy than log(scipy.special.softmax(x)) for inputs that make softmax saturate.

scipy.stats improvements

The function for generating random samples in scipy.stats.dlaplace has been improved. The new function is approximately twice as fast with a memory footprint reduction between 25 % and 60 % (see gh-11069).

scipy.stats functions that accept a seed for reproducible calculations using random number generation (e.g. random variates from distributions) can now use the modern np.random.Generator as well as the legacy np.random.RandomState as a seed.

The axis parameter was added to scipy.stats.rankdata. This allows slices of an array along the given axis to be ranked independently.

The axis parameter was added to scipy.stats.f_oneway, allowing it to compute multiple one-way ANOVA tests for data stored in n-dimensional arrays. The performance of f_oneway was also improved for some cases.

The PDF and CDF methods for stats.geninvgauss are now significantly faster as the numerical integration to calculate the CDF uses a Cython based LowLevelCallable.

Moments of the normal distribution (scipy.stats.norm) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Moments and entropy trapezoidal distribution (scipy.stats.trapz) are now calculated using analytical formulas instead of numerical integration for greater speed and accuracy

Methods of the truncated normal distribution (scipy.stats.truncnorm), especially _rvs, are significantly faster after a complete rewrite.

The fit method of the Laplace distribution, scipy.stats.laplace, now uses the analytical formulas for the maximum likelihood estimates of the parameters.

Generation of random variates is now thread safe for all SciPy distributions. 3rd-party distributions may need to modify the signature of the _rvs() method to conform to _rvs(self, ..., size=None, random_state=None). (A one-time VisibleDeprecationWarning is emitted when using non-conformant distributions.)

The Kolmogorov-Smirnov two-sided test statistic distribution (scipy.stats.kstwo) was added. Calculates the distribution of the K-S two-sided statistic D_n for a sample of size n, using a mixture of exact and asymptotic algorithms.

The new function median_abs_deviation replaces the deprecated median_absolute_deviation.

The wilcoxon function now computes the p-value for Wilcoxon's signed rank test using the exact distribution for inputs up to length 25. The function has a new mode parameter to specify how the p-value is to be computed. The default is "auto", which uses the exact distribution for inputs up to length 25 and the normal approximation for larger inputs.

Added a new Cython-based implementation to evaluate guassian kernel estimates, which should improve the performance of gaussian_kde

The winsorize function now has a nan_policy argument for refined handling of nan input values.

The binned_statistic_dd function with statistic="std" performance was improved by ~4x.

scipy.stats.kstest(rvs, cdf,...) now handles both one-sample and two-sample testing. The one-sample variation uses scipy.stats.ksone (or scipy.stats.kstwo with back off to scipy.stats.kstwobign) to calculate the p-value. The two-sample variation, invoked if cdf is array_like, uses an algorithm described by Hodges to compute the probability directly, only backing off to scipy.stats.kstwo in case of overflow. The result in both cases is more accurate p-values, especially for two-sample testing with smaller (or quite different) sizes.

scipy.stats.maxwell performance improvements include a 20 % speed up for fit()and 5 % forpdf()`

scipy.stats.shapiro and scipy.stats.jarque_bera now return a named tuple for greater consistency with other stats functions

Deprecated features

scipy deprecations

scipy.special changes

The bdtr, bdtrc, and bdtri functions are deprecating non-negative non-integral n arguments.

scipy.stats changes

The function median_absolute_deviation is deprecated. Use median_abs_deviation instead.

The use of the string "raw" with the scale parameter of iqr is deprecated. Use scale=1 instead.

Backwards incompatible changes

scipy.interpolate changes

scipy.linalg changes

The output signatures of ?syevr, ?heevr have been changed from w, v, info to w, v, m, isuppz, info

The order of output arguments w, v of <sy/he>{gv, gvd, gvx} is swapped.

scipy.signal changes

The output length of scipy.signal.upfirdn has been corrected, resulting outputs may now be shorter for some combinations of up/down ratios and input signal and filter lengths.

scipy.signal.resample now supports a domain keyword argument for specification of time or frequency domain input.

scipy.stats changes

Other changes

Improved support for leveraging 64-bit integer size from linear algebra backends in several parts of the SciPy codebase.

Shims designed to ensure the compatibility of SciPy with Python 2.7 have now been removed.

Many warnings due to unused imports and unused assignments have been addressed.

Many usage examples were added to function docstrings, and many input validations and intuitive exception messages have been added throughout the codebase.

Early stage adoption of type annotations in a few parts of the codebase

Authors

  • @endolith
  • Hameer Abbasi
  • ADmitri +
  • Wesley Alves +
  • Berkay Antmen +
  • Sylwester Arabas +
  • Arne Küderle +
  • Christoph Baumgarten
  • Peter Bell
  • Felix Berkenkamp
  • Jordão Bragantini +
  • Clemens Brunner +
  • Evgeni Burovski
  • Matthias Bussonnier +
  • CJ Carey
  • Derrick Chambers +
  • Leander Claes +
  • Christian Clauss
  • Luigi F. Cruz +
  • dankleeman
  • Andras Deak
  • Milad Sadeghi DM +
  • jeremie du boisberranger +
  • Stefan Endres
  • Malte Esders +
  • Leo Fang +
  • felixhekhorn +
  • Isuru Fernando
  • Andrew Fowlie
  • Lakshay Garg +
  • Gaurav Gijare +
  • Ralf Gommers
  • Emmanuelle Gouillart +
  • Kevin Green +
  • Martin Grignard +
  • Maja Gwozdz
  • gyu-don +
  • Matt Haberland
  • hakeemo +
  • Charles Harris
  • Alex Henrie
  • Santi Hernandez +
  • William Hickman +
  • Till Hoffmann +
  • Joseph T. Iosue +
  • Anany Shrey Jain
  • Jakob Jakobson
  • Charles Jekel +
  • Julien Jerphanion +
  • Jiacheng-Liu +
  • Christoph Kecht +
  • Paul Kienzle +
  • Reidar Kind +
  • Dmitry E. Kislov +
  • Konrad +
  • Konrad0
  • Takuya KOUMURA +
  • Krzysztof Pióro
  • Peter Mahler Larsen
  • Eric Larson
  • Antony Lee
  • Gregory Lee +
  • Gregory R. Lee
  • Chelsea Liu
  • Cong Ma +
  • Kevin Mader +
  • Maja Gwóźdź +
  • Alex Marvin +
  • Matthias Kümmerer
  • Nikolay Mayorov
  • Mazay0 +
  • G. D. McBain
  • Nicholas McKibben +
  • Sabrina J. Mielke +
  • Sebastian J. Mielke +
  • MiloÅ¡ Komarčević +
  • Shubham Mishra +
  • Santiago M. Mola +
  • Grzegorz Mrukwa +
  • Peyton Murray
  • Andrew Nelson
  • Nico Schlömer
  • nwjenkins +
  • odidev +
  • Sambit Panda
  • Vikas Pandey +
  • Rick Paris +
  • Harshal Prakash Patankar +
  • Balint Pato +
  • Matti Picus
  • Ilhan Polat
  • poom +
  • Siddhesh Poyarekar
  • Vladyslav Rachek +
  • Bharat Raghunathan
  • Manu Rajput +
  • Tyler Reddy
  • Andrew Reed +
  • Lucas Roberts
  • Ariel Rokem
  • Heshy Roskes
  • Matt Ruffalo
  • Atsushi Sakai +
  • Benjamin Santos +
  • Christoph Schock +
  • Lisa Schwetlick +
  • Chris Simpson +
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • Kale-ab Tessera +
  • Seth Troisi +
  • Robert Uhl +
  • Paul van Mulbregt
  • Vasiliy +
  • Isaac Virshup +
  • Pauli Virtanen
  • Shakthi Visagan +
  • Jan Vleeshouwers +
  • Sam Wallan +
  • Lijun Wang +
  • Warren Weckesser
  • Richard Weiss +
  • wenhui-prudencemed +
  • Eric Wieser
  • Josh Wilson
  • James Wright +
  • Ruslan Yevdokymov +
  • Ziyao Zhang +

A total of 129 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 6 years ago

scipy - SciPy 1.2.3

SciPy 1.2.3 Release Notes

SciPy 1.2.3 is a bug-fix release with no new features compared to 1.2.2. It is part of the long-term support (LTS) release series for Python 2.7.

Authors

  • Geordie McBain
  • Matt Haberland
  • David Hagen
  • Tyler Reddy
  • Pauli Virtanen
  • Eric Larson
  • Yu Feng
  • ananyashreyjain
  • Nikolay Mayorov
  • Evgeni Burovski
  • Warren Weckesser

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.4.1

SciPy 1.4.1 Release Notes

SciPy 1.4.1 is a bug-fix release with no new features compared to 1.4.0. Importantly, it aims to fix a problem where an older version of pybind11 may cause a segmentation fault when imported alongside incompatible libraries.

Authors

  • Ralf Gommers
  • Tyler Reddy

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.4.0

SciPy 1.4.0 Release Notes

SciPy 1.4.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.4.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy >=1.13.3 (for Python 3.5, 3.6), >=1.14.5 (for Python 3.7), >= 1.17.3 (for Python 3.8)

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • a new submodule, scipy.fft, now supersedes scipy.fftpack; this means support for long double transforms, faster multi-dimensional transforms, improved algorithm time complexity, release of the global intepreter lock, and control over threading behavior
  • support for pydata/sparse arrays in scipy.sparse.linalg
  • substantial improvement to the documentation and functionality of several scipy.special functions, and some new additions
  • the generalized inverse Gaussian distribution has been added to scipy.stats
  • an implementation of the Edmonds-Karp algorithm in scipy.sparse.csgraph.maximum_flow
  • scipy.spatial.SphericalVoronoi now supports n-dimensional input, has linear memory complexity, improved performance, and supports single-hemisphere generators

New features

Infrastructure

Documentation can now be built with runtests.py --doc

A Dockerfile is now available in the scipy/scipy-dev repository to facilitate getting started with SciPy development.

scipy.constants improvements

scipy.constants has been updated with the CODATA 2018 constants.

scipy.fft added

scipy.fft is a new submodule that supersedes the scipy.fftpack submodule. For the most part, this is a drop-in replacement for numpy.fft and scipy.fftpack alike. With some important differences, scipy.fft: - uses NumPy's conventions for real transforms (rfft). This means the return value is a complex array, half the size of the full fft output. This is different from the output of fftpack which returned a real array representing complex components packed together. - the inverse real to real transforms (idct and idst) are normalized for norm=None in thesame way as ifft. This means the identity idct(dct(x)) == x is now True for all norm modes. - does not include the convolutions or pseudo-differential operators from fftpack.

This submodule is based on the pypocketfft library, developed by the author of pocketfft which was recently adopted by NumPy as well. pypocketfft offers a number of advantages over fortran FFTPACK: - support for long double (np.longfloat) precision transforms. - faster multi-dimensional transforms using vectorisation - Bluestein’s algorithm removes the worst-case O(n^2) complexity of FFTPACK - the global interpreter lock (GIL) is released during transforms - optional multithreading of multi-dimensional transforms via the workers argument

Note that scipy.fftpack has not been deprecated and will continue to be maintained but is now considered legacy. New code is recommended to use scipy.fft instead, where possible.

scipy.fftpack improvements

scipy.fftpack now uses pypocketfft to perform its FFTs, offering the same speed and accuracy benefits listed for scipy.fft above but without the improved API.

scipy.integrate improvements

The function scipy.integrate.solve_ivp now has an args argument. This allows the user-defined functions passed to the function to have additional parameters without having to create wrapper functions or lambda expressions for them.

scipy.integrate.solve_ivp can now return a y_events attribute representing the solution of the ODE at event times

New OdeSolver is implemented --- DOP853. This is a high-order explicit Runge-Kutta method originally implemented in Fortran. Now we provide a pure Python implementation usable through solve_ivp with all its features.

scipy.integrate.quad provides better user feedback when break points are specified with a weighted integrand.

scipy.integrate.quad_vec is now available for general purpose integration of vector-valued functions

scipy.interpolate improvements

scipy.interpolate.pade now handles complex input data gracefully

scipy.interpolate.Rbf can now interpolate multi-dimensional functions

scipy.io improvements

scipy.io.wavfile.read can now read data from a WAV file that has a malformed header, similar to other modern WAV file parsers

scipy.io.FortranFile now has an expanded set of available Exception classes for handling poorly-formatted files

scipy.linalg improvements

The function scipy.linalg.subspace_angles(A, B) now gives correct results for complex-valued matrices. Before this, the function only returned correct values for real-valued matrices.

New boolean keyword argument check_finite for scipy.linalg.norm; whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

scipy.linalg.solve_triangular has improved performance for a C-ordered triangular matrix

LAPACK wrappers have been added for ?geequ, ?geequb, ?syequb, and ?heequb

Some performance improvements may be observed due to an internal optimization in operations involving LAPACK routines via _compute_lwork. This is particularly true for operations on small arrays.

Block QR wrappers are now available in scipy.linalg.lapack

scipy.ndimage improvements

scipy.optimize improvements

It is now possible to use linear and non-linear constraints with scipy.optimize.differential_evolution.

scipy.optimize.linear_sum_assignment has been re-written in C++ to improve performance, and now allows input costs to be infinite.

A ScalarFunction.fun_and_grad method was added for convenient simultaneous retrieval of a function and gradient evaluation

scipy.optimize.minimize BFGS method has improved performance by avoiding duplicate evaluations in some cases

Better user feedback is provided when an objective function returns an array instead of a scalar.

scipy.signal improvements

Added a new function to calculate convolution using the overlap-add method, named scipy.signal.oaconvolve. Like scipy.signal.fftconvolve, this function supports specifying dimensions along which to do the convolution.

scipy.signal.cwt now supports complex wavelets.

The implementation of choose_conv_method has been updated to reflect the new FFT implementation. In addition, the performance has been significantly improved (with rather drastic improvements in edge cases).

The function upfirdn now has a mode keyword argument that can be used to select the signal extension mode used at the signal boundaries. These modes are also available for use in resample_poly via a newly added padtype argument.

scipy.signal.sosfilt now benefits from Cython code for improved performance

scipy.signal.resample should be more efficient by leveraging rfft when possible

scipy.sparse improvements

It is now possible to use the LOBPCG method in scipy.sparse.linalg.svds.

scipy.sparse.linalg.LinearOperator now supports the operation rmatmat for adjoint matrix-matrix multiplication, in addition to rmatvec.

Multiple stability updates enable float32 support in the LOBPCG eigenvalue solver for symmetric and Hermitian eigenvalues problems in scipy.sparse.linalg.lobpcg.

A solver for the maximum flow problem has been added as scipy.sparse.csgraph.maximum_flow.

scipy.sparse.csgraph.maximum_bipartite_matching now allows non-square inputs, no longer requires a perfect matching to exist, and has improved performance.

scipy.sparse.lil_matrix conversions now perform better in some scenarios

Basic support is available for pydata/sparse arrays in scipy.sparse.linalg

scipy.sparse.linalg.spsolve_triangular now supports the unit_diagonal argument to improve call signature similarity with its dense counterpart, scipy.linalg.solve_triangular

assertAlmostEqual may now be used with sparse matrices, which have added support for __round__

scipy.spatial improvements

The bundled Qhull library was upgraded to version 2019.1, fixing several issues. Scipy-specific patches are no longer applied to it.

scipy.spatial.SphericalVoronoi now has linear memory complexity, improved performance, and supports single-hemisphere generators. Support has also been added for handling generators that lie on a great circle arc (geodesic input) and for generators in n-dimensions.

scipy.spatial.transform.Rotation now includes functions for calculation of a mean rotation, generation of the 3D rotation groups, and reduction of rotations with rotational symmetries.

scipy.spatial.transform.Slerp is now callable with a scalar argument

scipy.spatial.voronoi_plot_2d now supports furthest site Voronoi diagrams

scipy.spatial.Delaunay and scipy.spatial.Voronoi now have attributes for tracking whether they are furthest site diagrams

scipy.special improvements

The Voigt profile has been added as scipy.special.voigt_profile.

A real dispatch has been added for the Wright Omega function (scipy.special.wrightomega).

The analytic continuation of the Riemann zeta function has been added. (The Riemann zeta function is the one-argument variant of scipy.special.zeta.)

The complete elliptic integral of the first kind (scipy.special.ellipk) is now available in scipy.special.cython_special.

The accuracy of scipy.special.hyp1f1 for real arguments has been improved.

The documentation of many functions has been improved.

scipy.stats improvements

scipy.stats.multiscale_graphcorr added as an independence test that operates on high dimensional and nonlinear data sets. It has higher statistical power than other scipy.stats tests while being the only one that operates on multivariate data.

The generalized inverse Gaussian distribution (scipy.stats.geninvgauss) has been added.

It is now possible to efficiently reuse scipy.stats.binned_statistic_dd with new values by providing the result of a previous call to the function.

scipy.stats.hmean now handles input with zeros more gracefully.

The beta-binomial distribution is now available in scipy.stats.betabinom.

scipy.stats.zscore, scipy.stats.circmean, scipy.stats.circstd, and scipy.stats.circvar now support the nan_policy argument for enhanced handling of NaN values

scipy.stats.entropy now accepts an axis argument

scipy.stats.gaussian_kde.resample now accepts a seed argument to empower reproducibility

scipy.stats.kendalltau performance has improved, especially for large inputs, due to improved cache usage

scipy.stats.truncnorm distribution has been rewritten to support much wider tails

Deprecated features

scipy deprecations

Support for NumPy functions exposed via the root SciPy namespace is deprecated and will be removed in 2.0.0. For example, if you use scipy.rand or scipy.diag, you should change your code to directly use numpy.random.default_rng or numpy.diag, respectively. They remain available in the currently continuing Scipy 1.x release series.

The exception to this rule is using scipy.fft as a function -- :mod:scipy.fft is now meant to be used only as a module, so the ability to call scipy.fft(...) will be removed in SciPy 1.5.0.

In scipy.spatial.Rotation methods from_dcm, as_dcm were renamed to from_matrix, as_matrix respectively. The old names will be removed in SciPy 1.6.0.

Method Rotation.match_vectors was deprecated in favor of Rotation.align_vectors, which provides a more logical and general API to the same functionality. The old method will be removed in SciPy 1.6.0.

Backwards incompatible changes

scipy.special changes

The deprecated functions hyp2f0, hyp1f2, and hyp3f0 have been removed.

The deprecated function bessel_diff_formula has been removed.

The function i0 is no longer registered with numpy.dual, so that numpy.dual.i0 will unconditionally refer to the NumPy version regardless of whether scipy.special is imported.

The function expn has been changed to return nan outside of its domain of definition (x, n < 0) instead of inf.

scipy.sparse changes

Sparse matrix reshape now raises an error if shape is not two-dimensional, rather than guessing what was meant. The behavior is now the same as before SciPy 1.1.0.

CSR and CSC sparse matrix classes should now return empty matrices of the same type when indexed out of bounds. Previously, for some versions of SciPy, this would raise an IndexError. The change is largely motivated by greater consistency with ndarray and numpy.matrix semantics.

scipy.signal changes

scipy.signal.resample behavior for length-1 signal inputs has been fixed to output a constant (DC) value rather than an impulse, consistent with the assumption of signal periodicity in the FFT method.

scipy.signal.cwt now performs complex conjugation and time-reversal of wavelet data, which is a backwards-incompatible bugfix for time-asymmetric wavelets.

scipy.stats changes

scipy.stats.loguniform added with better documentation as (an alias for scipy.stats.reciprocal). loguniform generates random variables that are equally likely in the log space; e.g., 1, 10 and 100 are all equally likely if loguniform(10 ** 0, 10 ** 2).rvs() is used.

Other changes

The LSODA method of scipy.integrate.solve_ivp now correctly detects stiff problems.

scipy.spatial.cKDTree now accepts and correctly handles empty input data

scipy.stats.binned_statistic_dd now calculates the standard deviation statistic in a numerically stable way.

scipy.stats.binned_statistic_dd now throws an error if the input data contains either np.nan or np.inf. Similarly, in scipy.stats now all continuous distributions' .fit() methods throw an error if the input data contain any instance of either np.nan or np.inf.

Authors

  • @endolith
  • @wenhui-prudencemed +
  • Abhinav +
  • Anne Archibald
  • ashwinpathak20nov1996 +
  • Danilo Augusto +
  • Nelson Auner +
  • aypiggott +
  • Christoph Baumgarten
  • Peter Bell
  • Sebastian Berg
  • Arman Bilge +
  • Benedikt Boecking +
  • Christoph Boeddeker +
  • Daniel Bunting
  • Evgeni Burovski
  • Angeline Burrell +
  • Angeline G. Burrell +
  • CJ Carey
  • Carlos Ramos Carreño +
  • Mak Sze Chun +
  • Malayaja Chutani +
  • Christian Clauss +
  • Jonathan Conroy +
  • Stephen P Cook +
  • Dylan Cutler +
  • Anirudh Dagar +
  • Aidan Dang +
  • dankleeman +
  • Brandon David +
  • Tyler Dawson +
  • Dieter Werthmüller
  • Joe Driscoll +
  • Jakub Dyczek +
  • Dávid Bodnár
  • Fletcher Easton +
  • Stefan Endres
  • etienne +
  • Johann Faouzi
  • Yu Feng
  • Isuru Fernando +
  • Matthew H Flamm
  • Martin Gauch +
  • Gabriel Gerlero +
  • Ralf Gommers
  • Chris Gorgolewski +
  • Domen Gorjup +
  • Edouard Goudenhoofdt +
  • Jan Gwinner +
  • Maja Gwozdz +
  • Matt Haberland
  • hadshirt +
  • Pierre Haessig +
  • David Hagen
  • Charles Harris
  • Gina Helfrich +
  • Alex Henrie +
  • Francisco J. Hernandez Heras +
  • Andreas Hilboll
  • Lindsey Hiltner
  • Thomas Hisch
  • Min ho Kim +
  • Gert-Ludwig Ingold
  • jakobjakobson13 +
  • Todd Jennings
  • He Jia
  • Muhammad Firmansyah Kasim +
  • Andrew Knyazev +
  • Holger Kohr +
  • Mateusz Konieczny +
  • Krzysztof Pióro +
  • Philipp Lang +
  • Peter Mahler Larsen +
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Chelsea Liu +
  • Jesse Livezey
  • Peter Lysakovski +
  • Jason Manley +
  • Michael Marien +
  • Nikolay Mayorov
  • G. D. McBain +
  • Sam McCormack +
  • Melissa Weber Mendonça +
  • Kevin Michel +
  • mikeWShef +
  • Sturla Molden
  • Eric Moore
  • Peyton Murray +
  • Andrew Nelson
  • Clement Ng +
  • Juan Nunez-Iglesias
  • Renee Otten +
  • Kellie Ottoboni +
  • Ayappan P
  • Sambit Panda +
  • Tapasweni Pathak +
  • Oleksandr Pavlyk
  • Fabian Pedregosa
  • Petar Mlinarić
  • Matti Picus
  • Marcel Plch +
  • Christoph Pohl +
  • Ilhan Polat
  • Siddhesh Poyarekar +
  • Ioannis Prapas +
  • James Alan Preiss +
  • Yisheng Qiu +
  • Eric Quintero
  • Bharat Raghunathan +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio Horta Ribeiro
  • Lucas Roberts
  • rtshort +
  • Josua Sassen
  • Kevin Sheppard
  • Scott Sievert
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • tborisow +
  • Étienne Tremblay +
  • tuxcell +
  • Miguel de Val-Borro
  • Andrew Valentine +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Sebastiano Vigna
  • Pauli Virtanen
  • Dany Vohl +
  • Ben Walsh +
  • Huize Wang +
  • Warren Weckesser
  • Anreas Weh +
  • Joseph Weston +
  • Adrian Wijaya +
  • Timothy Willard +
  • Josh Wilson
  • Kentaro Yamamoto +
  • Dave Zbarsky +

A total of 142 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.4.0rc2

SciPy 1.4.0 Release Notes

Note: Scipy 1.4.0 is not released yet!

SciPy 1.4.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.4.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy >=1.13.3 (for Python 3.5, 3.6), >=1.14.5 (for Python 3.7), >= 1.17.3 (for Python 3.8)

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • a new submodule, scipy.fft, now supersedes scipy.fftpack; this means support for long double transforms, faster multi-dimensional transforms, improved algorithm time complexity, release of the global intepreter lock, and control over threading behavior
  • support for pydata/sparse arrays in scipy.sparse.linalg
  • substantial improvement to the documentation and functionality of several scipy.special functions, and some new additions
  • the generalized inverse Gaussian distribution has been added to scipy.stats
  • an implementation of the Edmonds-Karp algorithm in scipy.sparse.csgraph.maximum_flow
  • scipy.spatial.SphericalVoronoi now supports n-dimensional input, has linear memory complexity, improved performance, and supports single-hemisphere generators

New features

Infrastructure

Documentation can now be built with runtests.py --doc

A Dockerfile is now available in the scipy/scipy-dev repository to facilitate getting started with SciPy development.

scipy.constants improvements

scipy.constants has been updated with the CODATA 2018 constants.

scipy.fft added

scipy.fft is a new submodule that supersedes the scipy.fftpack submodule. For the most part, this is a drop-in replacement for numpy.fft and scipy.fftpack alike. With some important differences, scipy.fft: - uses NumPy's conventions for real transforms (rfft). This means the return value is a complex array, half the size of the full fft output. This is different from the output of fftpack which returned a real array representing complex components packed together. - the inverse real to real transforms (idct and idst) are normalized for norm=None in thesame way as ifft. This means the identity idct(dct(x)) == x is now True for all norm modes. - does not include the convolutions or pseudo-differential operators from fftpack.

This submodule is based on the pypocketfft library, developed by the author of pocketfft which was recently adopted by NumPy as well. pypocketfft offers a number of advantages over fortran FFTPACK: - support for long double (np.longfloat) precision transforms. - faster multi-dimensional transforms using vectorisation - Bluestein’s algorithm removes the worst-case O(n^2) complexity of FFTPACK - the global interpreter lock (GIL) is released during transforms - optional multithreading of multi-dimensional transforms via the workers argument

Note that scipy.fftpack has not been deprecated and will continue to be maintained but is now considered legacy. New code is recommended to use scipy.fft instead, where possible.

scipy.fftpack improvements

scipy.fftpack now uses pypocketfft to perform its FFTs, offering the same speed and accuracy benefits listed for scipy.fft above but without the improved API.

scipy.integrate improvements

The function scipy.integrate.solve_ivp now has an args argument. This allows the user-defined functions passed to the function to have additional parameters without having to create wrapper functions or lambda expressions for them.

scipy.integrate.solve_ivp can now return a y_events attribute representing the solution of the ODE at event times

New OdeSolver is implemented --- DOP853. This is a high-order explicit Runge-Kutta method originally implemented in Fortran. Now we provide a pure Python implementation usable through solve_ivp with all its features.

scipy.integrate.quad provides better user feedback when break points are specified with a weighted integrand.

scipy.integrate.quad_vec is now available for general purpose integration of vector-valued functions

scipy.interpolate improvements

scipy.interpolate.pade now handles complex input data gracefully

scipy.interpolate.Rbf can now interpolate multi-dimensional functions

scipy.io improvements

scipy.io.wavfile.read can now read data from a WAV file that has a malformed header, similar to other modern WAV file parsers

scipy.io.FortranFile now has an expanded set of available Exception classes for handling poorly-formatted files

scipy.linalg improvements

The function scipy.linalg.subspace_angles(A, B) now gives correct results for complex-valued matrices. Before this, the function only returned correct values for real-valued matrices.

New boolean keyword argument check_finite for scipy.linalg.norm; whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

scipy.linalg.solve_triangular has improved performance for a C-ordered triangular matrix

LAPACK wrappers have been added for ?geequ, ?geequb, ?syequb, and ?heequb

Some performance improvements may be observed due to an internal optimization in operations involving LAPACK routines via _compute_lwork. This is particularly true for operations on small arrays.

Block QR wrappers are now available in scipy.linalg.lapack

scipy.ndimage improvements

scipy.optimize improvements

It is now possible to use linear and non-linear constraints with scipy.optimize.differential_evolution.

scipy.optimize.linear_sum_assignment has been re-written in C++ to improve performance, and now allows input costs to be infinite.

A ScalarFunction.fun_and_grad method was added for convenient simultaneous retrieval of a function and gradient evaluation

scipy.optimize.minimize BFGS method has improved performance by avoiding duplicate evaluations in some cases

Better user feedback is provided when an objective function returns an array instead of a scalar.

scipy.signal improvements

Added a new function to calculate convolution using the overlap-add method, named scipy.signal.oaconvolve. Like scipy.signal.fftconvolve, this function supports specifying dimensions along which to do the convolution.

scipy.signal.cwt now supports complex wavelets.

The implementation of choose_conv_method has been updated to reflect the new FFT implementation. In addition, the performance has been significantly improved (with rather drastic improvements in edge cases).

The function upfirdn now has a mode keyword argument that can be used to select the signal extension mode used at the signal boundaries. These modes are also available for use in resample_poly via a newly added padtype argument.

scipy.signal.sosfilt now benefits from Cython code for improved performance

scipy.signal.resample should be more efficient by leveraging rfft when possible

scipy.sparse improvements

It is now possible to use the LOBPCG method in scipy.sparse.linalg.svds.

scipy.sparse.linalg.LinearOperator now supports the operation rmatmat for adjoint matrix-matrix multiplication, in addition to rmatvec.

Multiple stability updates enable float32 support in the LOBPCG eigenvalue solver for symmetric and Hermitian eigenvalues problems in scipy.sparse.linalg.lobpcg.

A solver for the maximum flow problem has been added as scipy.sparse.csgraph.maximum_flow.

scipy.sparse.csgraph.maximum_bipartite_matching now allows non-square inputs, no longer requires a perfect matching to exist, and has improved performance.

scipy.sparse.lil_matrix conversions now perform better in some scenarios

Basic support is available for pydata/sparse arrays in scipy.sparse.linalg

scipy.sparse.linalg.spsolve_triangular now supports the unit_diagonal argument to improve call signature similarity with its dense counterpart, scipy.linalg.solve_triangular

assertAlmostEqual may now be used with sparse matrices, which have added support for __round__

scipy.spatial improvements

The bundled Qhull library was upgraded to version 2019.1, fixing several issues. Scipy-specific patches are no longer applied to it.

scipy.spatial.SphericalVoronoi now has linear memory complexity, improved performance, and supports single-hemisphere generators. Support has also been added for handling generators that lie on a great circle arc (geodesic input) and for generators in n-dimensions.

scipy.spatial.transform.Rotation now includes functions for calculation of a mean rotation, generation of the 3D rotation groups, and reduction of rotations with rotational symmetries.

scipy.spatial.transform.Slerp is now callable with a scalar argument

scipy.spatial.voronoi_plot_2d now supports furthest site Voronoi diagrams

scipy.spatial.Delaunay and scipy.spatial.Voronoi now have attributes for tracking whether they are furthest site diagrams

scipy.special improvements

The Voigt profile has been added as scipy.special.voigt_profile.

A real dispatch has been added for the Wright Omega function (scipy.special.wrightomega).

The analytic continuation of the Riemann zeta function has been added. (The Riemann zeta function is the one-argument variant of scipy.special.zeta.)

The complete elliptic integral of the first kind (scipy.special.ellipk) is now available in scipy.special.cython_special.

The accuracy of scipy.special.hyp1f1 for real arguments has been improved.

The documentation of many functions has been improved.

scipy.stats improvements

scipy.stats.multiscale_graphcorr added as an independence test that operates on high dimensional and nonlinear data sets. It has higher statistical power than other scipy.stats tests while being the only one that operates on multivariate data.

The generalized inverse Gaussian distribution (scipy.stats.geninvgauss) has been added.

It is now possible to efficiently reuse scipy.stats.binned_statistic_dd with new values by providing the result of a previous call to the function.

scipy.stats.hmean now handles input with zeros more gracefully.

The beta-binomial distribution is now available in scipy.stats.betabinom.

scipy.stats.zscore, scipy.stats.circmean, scipy.stats.circstd, and scipy.stats.circvar now support the nan_policy argument for enhanced handling of NaN values

scipy.stats.entropy now accepts an axis argument

scipy.stats.gaussian_kde.resample now accepts a seed argument to empower reproducibility

scipy.stats.kendalltau performance has improved, especially for large inputs, due to improved cache usage

scipy.stats.truncnorm distribution has been rewritten to support much wider tails

Deprecated features

scipy deprecations

Support for NumPy functions exposed via the root SciPy namespace is deprecated and will be removed in 2.0.0. For example, if you use scipy.rand or scipy.diag, you should change your code to directly use numpy.random.default_rng or numpy.diag, respectively. They remain available in the currently continuing Scipy 1.x release series.

The exception to this rule is using scipy.fft as a function -- :mod:scipy.fft is now meant to be used only as a module, so the ability to call scipy.fft(...) will be removed in SciPy 1.5.0.

In scipy.spatial.Rotation methods from_dcm, as_dcm were renamed to from_matrix, as_matrix respectively. The old names will be removed in SciPy 1.6.0.

Method Rotation.match_vectors was deprecated in favor of Rotation.align_vectors, which provides a more logical and general API to the same functionality. The old method will be removed in SciPy 1.6.0.

Backwards incompatible changes

scipy.special changes

The deprecated functions hyp2f0, hyp1f2, and hyp3f0 have been removed.

The deprecated function bessel_diff_formula has been removed.

The function i0 is no longer registered with numpy.dual, so that numpy.dual.i0 will unconditionally refer to the NumPy version regardless of whether scipy.special is imported.

The function expn has been changed to return nan outside of its domain of definition (x, n < 0) instead of inf.

scipy.sparse changes

Sparse matrix reshape now raises an error if shape is not two-dimensional, rather than guessing what was meant. The behavior is now the same as before SciPy 1.1.0.

CSR and CSC sparse matrix classes should now return empty matrices of the same type when indexed out of bounds. Previously, for some versions of SciPy, this would raise an IndexError. The change is largely motivated by greater consistency with ndarray and numpy.matrix semantics.

scipy.signal changes

scipy.signal.resample behavior for length-1 signal inputs has been fixed to output a constant (DC) value rather than an impulse, consistent with the assumption of signal periodicity in the FFT method.

scipy.signal.cwt now performs complex conjugation and time-reversal of wavelet data, which is a backwards-incompatible bugfix for time-asymmetric wavelets.

scipy.stats changes

scipy.stats.loguniform added with better documentation as (an alias for scipy.stats.reciprocal). loguniform generates random variables that are equally likely in the log space; e.g., 1, 10 and 100 are all equally likely if loguniform(10 ** 0, 10 ** 2).rvs() is used.

Other changes

The LSODA method of scipy.integrate.solve_ivp now correctly detects stiff problems.

scipy.spatial.cKDTree now accepts and correctly handles empty input data

scipy.stats.binned_statistic_dd now calculates the standard deviation statistic in a numerically stable way.

scipy.stats.binned_statistic_dd now throws an error if the input data contains either np.nan or np.inf. Similarly, in scipy.stats now all continuous distributions' .fit() methods throw an error if the input data contain any instance of either np.nan or np.inf.

Authors

  • @endolith
  • @wenhui-prudencemed +
  • Abhinav +
  • Anne Archibald
  • ashwinpathak20nov1996 +
  • Danilo Augusto +
  • Nelson Auner +
  • aypiggott +
  • Christoph Baumgarten
  • Peter Bell
  • Sebastian Berg
  • Arman Bilge +
  • Benedikt Boecking +
  • Christoph Boeddeker +
  • Daniel Bunting
  • Evgeni Burovski
  • Angeline Burrell +
  • Angeline G. Burrell +
  • CJ Carey
  • Carlos Ramos Carreño +
  • Mak Sze Chun +
  • Malayaja Chutani +
  • Christian Clauss +
  • Jonathan Conroy +
  • Stephen P Cook +
  • Dylan Cutler +
  • Anirudh Dagar +
  • Aidan Dang +
  • dankleeman +
  • Brandon David +
  • Tyler Dawson +
  • Dieter Werthmüller
  • Joe Driscoll +
  • Jakub Dyczek +
  • Dávid Bodnár
  • Fletcher Easton +
  • Stefan Endres
  • etienne +
  • Johann Faouzi
  • Yu Feng
  • Isuru Fernando +
  • Matthew H Flamm
  • Martin Gauch +
  • Gabriel Gerlero +
  • Ralf Gommers
  • Chris Gorgolewski +
  • Domen Gorjup +
  • Edouard Goudenhoofdt +
  • Jan Gwinner +
  • Maja Gwozdz +
  • Matt Haberland
  • hadshirt +
  • Pierre Haessig +
  • David Hagen
  • Charles Harris
  • Gina Helfrich +
  • Alex Henrie +
  • Francisco J. Hernandez Heras +
  • Andreas Hilboll
  • Lindsey Hiltner
  • Thomas Hisch
  • Min ho Kim +
  • Gert-Ludwig Ingold
  • jakobjakobson13 +
  • Todd Jennings
  • He Jia
  • Muhammad Firmansyah Kasim +
  • Andrew Knyazev +
  • Holger Kohr +
  • Mateusz Konieczny +
  • Krzysztof Pióro +
  • Philipp Lang +
  • Peter Mahler Larsen +
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Chelsea Liu +
  • Jesse Livezey
  • Peter Lysakovski +
  • Jason Manley +
  • Michael Marien +
  • Nikolay Mayorov
  • G. D. McBain +
  • Sam McCormack +
  • Melissa Weber Mendonça +
  • Kevin Michel +
  • mikeWShef +
  • Sturla Molden
  • Eric Moore
  • Peyton Murray +
  • Andrew Nelson
  • Clement Ng +
  • Juan Nunez-Iglesias
  • Renee Otten +
  • Kellie Ottoboni +
  • Ayappan P
  • Sambit Panda +
  • Tapasweni Pathak +
  • Oleksandr Pavlyk
  • Fabian Pedregosa
  • Petar Mlinarić
  • Matti Picus
  • Marcel Plch +
  • Christoph Pohl +
  • Ilhan Polat
  • Siddhesh Poyarekar +
  • Ioannis Prapas +
  • James Alan Preiss +
  • Yisheng Qiu +
  • Eric Quintero
  • Bharat Raghunathan +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio Horta Ribeiro
  • Lucas Roberts
  • rtshort +
  • Josua Sassen
  • Kevin Sheppard
  • Scott Sievert
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • tborisow +
  • Étienne Tremblay +
  • tuxcell +
  • Miguel de Val-Borro
  • Andrew Valentine +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Sebastiano Vigna
  • Pauli Virtanen
  • Dany Vohl +
  • Ben Walsh +
  • Huize Wang +
  • Warren Weckesser
  • Anreas Weh +
  • Joseph Weston +
  • Adrian Wijaya +
  • Timothy Willard +
  • Josh Wilson
  • Kentaro Yamamoto +
  • Dave Zbarsky +

A total of 142 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.3.3

SciPy 1.3.3 Release Notes

SciPy 1.3.3 is a bug-fix release with no new features compared to 1.3.2. In particular, a test suite issue involving multiprocessing was fixed for Windows and Python 3.8 on macOS.

Wheels were also updated to place msvcp140.dll at the appropriate location, which was previously causing issues.

Authors

Ilhan Polat Tyler Reddy Ralf Gommers

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.4.0rc1

SciPy 1.4.0 Release Notes

Note: SciPy 1.4.0 is not released yet!

SciPy 1.4.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.4.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy >=1.13.3 (for Python 3.5, 3.6), >=1.14.5 (for Python 3.7), >= 1.17.3 (for Python 3.8)

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • a new submodule, scipy.fft, now supersedes scipy.fftpack; this means support for long double transforms, faster multi-dimensional transforms, improved algorithm time complexity, release of the global intepreter lock, and control over threading behavior
  • support for pydata/sparse arrays in scipy.sparse.linalg
  • substantial improvement to the documentation and functionality of several scipy.special functions, and some new additions
  • the generalized inverse Gaussian distribution has been added to scipy.stats
  • an implementation of the Edmonds-Karp algorithm in scipy.sparse.csgraph.maximum_flow
  • scipy.spatial.SphericalVoronoi now supports n-dimensional input, has linear memory complexity, improved performance, and supports single-hemisphere generators

New features

Infrastructure

Documentation can now be built with runtests.py --doc

A Dockerfile is now available in the scipy/scipy-dev repository to facilitate getting started with SciPy development.

scipy.constants improvements

scipy.constants has been updated with the CODATA 2018 constants.

scipy.fft added

scipy.fft is a new submodule that supersedes the scipy.fftpack submodule. For the most part, this is a drop-in replacement for numpy.fft and scipy.fftpack alike. With some important differences, scipy.fft: - uses NumPy's conventions for real transforms (rfft). This means the return value is a complex array, half the size of the full fft output. This is different from the output of fftpack which returned a real array representing complex components packed together. - the inverse real to real transforms (idct and idst) are normalized for norm=None in thesame way as ifft. This means the identity idct(dct(x)) == x is now True for all norm modes. - does not include the convolutions or pseudo-differential operators from fftpack.

This submodule is based on the pypocketfft library, developed by the author of pocketfft which was recently adopted by NumPy as well. pypocketfft offers a number of advantages over fortran FFTPACK: - support for long double (np.longfloat) precision transforms. - faster multi-dimensional transforms using vectorisation - Bluestein’s algorithm removes the worst-case O(n^2) complexity of FFTPACK - the global interpreter lock (GIL) is released during transforms - optional multithreading of multi-dimensional transforms via the workers argument

Note that scipy.fftpack has not been deprecated and will continue to be maintained but is now considered legacy. New code is recommended to use scipy.fft instead, where possible.

scipy.fftpack improvements

scipy.fftpack now uses pypocketfft to perform its FFTs, offering the same speed and accuracy benefits listed for scipy.fft above but without the improved API.

scipy.integrate improvements

The function scipy.integrate.solve_ivp now has an args argument. This allows the user-defined functions passed to the function to have additional parameters without having to create wrapper functions or lambda expressions for them.

scipy.integrate.solve_ivp can now return a y_events attribute representing the solution of the ODE at event times

New OdeSolver is implemented --- DOP853. This is a high-order explicit Runge-Kutta method originally implemented in Fortran. Now we provide a pure Python implementation usable through solve_ivp with all its features.

scipy.integrate.quad provides better user feedback when break points are specified with a weighted integrand.

scipy.integrate.quad_vec is now available for general purpose integration of vector-valued functions

scipy.interpolate improvements

scipy.interpolate.pade now handles complex input data gracefully

scipy.interpolate.Rbf can now interpolate multi-dimensional functions

scipy.io improvements

scipy.io.wavfile.read can now read data from a WAV file that has a malformed header, similar to other modern WAV file parsers

scipy.io.FortranFile now has an expanded set of available Exception classes for handling poorly-formatted files

scipy.linalg improvements

The function scipy.linalg.subspace_angles(A, B) now gives correct results for complex-valued matrices. Before this, the function only returned correct values for real-valued matrices.

New boolean keyword argument check_finite for scipy.linalg.norm; whether to check that the input matrix contains only finite numbers. Disabling may give a performance gain, but may result in problems (crashes, non-termination) if the inputs do contain infinities or NaNs.

scipy.linalg.solve_triangular has improved performance for a C-ordered triangular matrix

LAPACK wrappers have been added for ?geequ, ?geequb, ?syequb, and ?heequb

Some performance improvements may be observed due to an internal optimization in operations involving LAPACK routines via _compute_lwork. This is particularly true for operations on small arrays.

Block QR wrappers are now available in scipy.linalg.lapack

scipy.ndimage improvements

scipy.optimize improvements

It is now possible to use linear and non-linear constraints with scipy.optimize.differential_evolution.

scipy.optimize.linear_sum_assignment has been re-written in C++ to improve performance, and now allows input costs to be infinite.

A ScalarFunction.fun_and_grad method was added for convenient simultaneous retrieval of a function and gradient evaluation

scipy.optimize.minimize BFGS method has improved performance by avoiding duplicate evaluations in some cases

Better user feedback is provided when an objective function returns an array instead of a scalar.

scipy.signal improvements

Added a new function to calculate convolution using the overlap-add method, named scipy.signal.oaconvolve. Like scipy.signal.fftconvolve, this function supports specifying dimensions along which to do the convolution.

scipy.signal.cwt now supports complex wavelets.

The implementation of choose_conv_method has been updated to reflect the new FFT implementation. In addition, the performance has been significantly improved (with rather drastic improvements in edge cases).

The function upfirdn now has a mode keyword argument that can be used to select the signal extension mode used at the signal boundaries. These modes are also available for use in resample_poly via a newly added padtype argument.

scipy.signal.sosfilt now benefits from Cython code for improved performance

scipy.signal.resample should be more efficient by leveraging rfft when possible

scipy.sparse improvements

It is now possible to use the LOBPCG method in scipy.sparse.linalg.svds.

scipy.sparse.linalg.LinearOperator now supports the operation rmatmat for adjoint matrix-matrix multiplication, in addition to rmatvec.

Multiple stability updates enable float32 support in the LOBPCG eigenvalue solver for symmetric and Hermitian eigenvalues problems in scipy.sparse.linalg.lobpcg.

A solver for the maximum flow problem has been added as scipy.sparse.csgraph.maximum_flow.

scipy.sparse.csgraph.maximum_bipartite_matching now allows non-square inputs, no longer requires a perfect matching to exist, and has improved performance.

scipy.sparse.lil_matrix conversions now perform better in some scenarios

Basic support is available for pydata/sparse arrays in scipy.sparse.linalg

scipy.sparse.linalg.spsolve_triangular now supports the unit_diagonal argument to improve call signature similarity with its dense counterpart, scipy.linalg.solve_triangular

assertAlmostEqual may now be used with sparse matrices, which have added support for __round__

scipy.spatial improvements

The bundled Qhull library was upgraded to version 2019.1, fixing several issues. Scipy-specific patches are no longer applied to it.

scipy.spatial.SphericalVoronoi now has linear memory complexity, improved performance, and supports single-hemisphere generators. Support has also been added for handling generators that lie on a great circle arc (geodesic input) and for generators in n-dimensions.

scipy.spatial.transform.Rotation now includes functions for calculation of a mean rotation, generation of the 3D rotation groups, and reduction of rotations with rotational symmetries.

scipy.spatial.transform.Slerp is now callable with a scalar argument

scipy.spatial.voronoi_plot_2d now supports furthest site Voronoi diagrams

scipy.spatial.Delaunay and scipy.spatial.Voronoi now have attributes for tracking whether they are furthest site diagrams

scipy.special improvements

The Voigt profile has been added as scipy.special.voigt_profile.

A real dispatch has been added for the Wright Omega function (scipy.special.wrightomega).

The analytic continuation of the Riemann zeta function has been added. (The Riemann zeta function is the one-argument variant of scipy.special.zeta.)

The complete elliptic integral of the first kind (scipy.special.ellipk) is now available in scipy.special.cython_special.

The accuracy of scipy.special.hyp1f1 for real arguments has been improved.

The documentation of many functions has been improved.

scipy.stats improvements

scipy.stats.multiscale_graphcorr added as an independence test that operates on high dimensional and nonlinear data sets. It has higher statistical power than other scipy.stats tests while being the only one that operates on multivariate data. The generalized inverse Gaussian distribution (scipy.stats.geninvgauss) has been added.

It is now possible to efficiently reuse scipy.stats.binned_statistic_dd with new values by providing the result of a previous call to the function.

scipy.stats.hmean now handles input with zeros more gracefully.

The beta-binomial distribution is now available in scipy.stats.betabinom.

scipy.stats.zscore, scipy.stats.circmean, scipy.stats.circstd, and scipy.stats.circvar now support the nan_policy argument for enhanced handling of NaN values

scipy.stats.entropy now accepts an axis argument

scipy.stats.gaussian_kde.resample now accepts a seed argument to empower reproducibility

scipy.stats.multiscale_graphcorr has been added for calculation of the multiscale graph correlation (MGC) test statistic

scipy.stats.kendalltau performance has improved, especially for large inputs, due to improved cache usage

scipy.stats.truncnorm distribution has been rewritten to support much wider tails

Deprecated features

scipy deprecations

Support for NumPy functions exposed via the root SciPy namespace is deprecated and will be removed in 2.0.0. For example, if you use scipy.rand or scipy.diag, you should change your code to directly use numpy.random.default_rng or numpy.diag, respectively. They remain available in the currently continuing Scipy 1.x release series.

The exception to this rule is using scipy.fft as a function -- :mod:scipy.fft is now meant to be used only as a module, so the ability to call scipy.fft(...) will be removed in SciPy 1.5.0.

In scipy.spatial.Rotation methods from_dcm, as_dcm were renamed to from_matrix, as_matrix respectively. The old names will be removed in SciPy 1.6.0.

Backwards incompatible changes

scipy.special changes

The deprecated functions hyp2f0, hyp1f2, and hyp3f0 have been removed.

The deprecated function bessel_diff_formula has been removed.

The function i0 is no longer registered with numpy.dual, so that numpy.dual.i0 will unconditionally refer to the NumPy version regardless of whether scipy.special is imported.

The function expn has been changed to return nan outside of its domain of definition (x, n < 0) instead of inf.

scipy.sparse changes

Sparse matrix reshape now raises an error if shape is not two-dimensional, rather than guessing what was meant. The behavior is now the same as before SciPy 1.1.0.

scipy.spatial changes

The default behavior of the match_vectors method of scipy.spatial.transform.Rotation was changed for input vectors that are not normalized and not of equal lengths. Previously, such vectors would be normalized within the method.
Now, the calculated rotation takes the vector length into account, longer vectors will have a larger weight. For more details, see https://github.com/scipy/scipy/issues/10968.

scipy.signal changes

scipy.signal.resample behavior for length-1 signal inputs has been fixed to output a constant (DC) value rather than an impulse, consistent with the assumption of signal periodicity in the FFT method.

scipy.signal.cwt now performs complex conjugation and time-reversal of wavelet data, which is a backwards-incompatible bugfix for time-asymmetric wavelets.

scipy.stats changes

scipy.stats.loguniform added with better documentation as (an alias for scipy.stats.reciprocal). loguniform generates random variables that are equally likely in the log space; e.g., 1, 10 and 100 are all equally likely if loguniform(10 ** 0, 10 ** 2).rvs() is used.

Other changes

The LSODA method of scipy.integrate.solve_ivp now correctly detects stiff problems.

scipy.spatial.cKDTree now accepts and correctly handles empty input data

scipy.stats.binned_statistic_dd now calculates the standard deviation statistic in a numerically stable way.

scipy.stats.binned_statistic_dd now throws an error if the input data contains either np.nan or np.inf. Similarly, in scipy.stats now all continuous distributions' .fit() methods throw an error if the input data contain any instance of either np.nan or np.inf.

Authors

  • @endolith
  • Abhinav +
  • Anne Archibald
  • ashwinpathak20nov1996 +
  • Danilo Augusto +
  • Nelson Auner +
  • aypiggott +
  • Christoph Baumgarten
  • Peter Bell
  • Sebastian Berg
  • Arman Bilge +
  • Benedikt Boecking +
  • Christoph Boeddeker +
  • Daniel Bunting
  • Evgeni Burovski
  • Angeline Burrell +
  • Angeline G. Burrell +
  • CJ Carey
  • Carlos Ramos Carreño +
  • Mak Sze Chun +
  • Malayaja Chutani +
  • Christian Clauss +
  • Jonathan Conroy +
  • Stephen P Cook +
  • Dylan Cutler +
  • Anirudh Dagar +
  • Aidan Dang +
  • dankleeman +
  • Brandon David +
  • Tyler Dawson +
  • Dieter Werthmüller
  • Joe Driscoll +
  • Jakub Dyczek +
  • Dávid Bodnár
  • Fletcher Easton +
  • Stefan Endres
  • etienne +
  • Johann Faouzi
  • Yu Feng
  • Isuru Fernando +
  • Matthew H Flamm
  • Martin Gauch +
  • Gabriel Gerlero +
  • Ralf Gommers
  • Chris Gorgolewski +
  • Domen Gorjup +
  • Edouard Goudenhoofdt +
  • Jan Gwinner +
  • Maja Gwozdz +
  • Matt Haberland
  • hadshirt +
  • Pierre Haessig +
  • David Hagen
  • Charles Harris
  • Gina Helfrich +
  • Alex Henrie +
  • Francisco J. Hernandez Heras +
  • Andreas Hilboll
  • Lindsey Hiltner
  • Thomas Hisch
  • Min ho Kim +
  • Gert-Ludwig Ingold
  • jakobjakobson13 +
  • Todd Jennings
  • He Jia
  • Muhammad Firmansyah Kasim +
  • Andrew Knyazev +
  • Holger Kohr +
  • Mateusz Konieczny +
  • Krzysztof Pióro +
  • Philipp Lang +
  • Peter Mahler Larsen +
  • Eric Larson
  • Antony Lee
  • Gregory R. Lee
  • Chelsea Liu +
  • Jesse Livezey
  • Peter Lysakovski +
  • Jason Manley +
  • Michael Marien +
  • Nikolay Mayorov
  • G. D. McBain +
  • Sam McCormack +
  • Melissa Weber Mendonça +
  • Kevin Michel +
  • mikeWShef +
  • Sturla Molden
  • Eric Moore
  • Peyton Murray +
  • Andrew Nelson
  • Clement Ng +
  • Juan Nunez-Iglesias
  • Renee Otten +
  • Kellie Ottoboni +
  • Ayappan P
  • Sambit Panda +
  • Tapasweni Pathak +
  • Oleksandr Pavlyk
  • Fabian Pedregosa
  • Petar Mlinarić
  • Matti Picus
  • Marcel Plch +
  • Christoph Pohl +
  • Ilhan Polat
  • Siddhesh Poyarekar +
  • Ioannis Prapas +
  • James Alan Preiss +
  • Yisheng Qiu +
  • Eric Quintero
  • Bharat Raghunathan +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio Horta Ribeiro
  • Lucas Roberts
  • rtshort +
  • Josua Sassen
  • Kevin Sheppard
  • Scott Sievert
  • Leo Singer
  • Kai Striega
  • Søren Fuglede Jørgensen
  • tborisow +
  • Étienne Tremblay +
  • tuxcell +
  • Miguel de Val-Borro
  • Andrew Valentine +
  • Hugo van Kemenade
  • Paul van Mulbregt
  • Sebastiano Vigna
  • Pauli Virtanen
  • Dany Vohl +
  • Ben Walsh +
  • Huize Wang +
  • Warren Weckesser
  • Anreas Weh +
  • Joseph Weston +
  • Adrian Wijaya +
  • Timothy Willard +
  • Josh Wilson
  • Kentaro Yamamoto +
  • Dave Zbarsky +

A total of 141 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.3.2

SciPy 1.3.2 is a bug-fix and maintenance release that adds support for Python 3.8.

Authors

  • CJ Carey
  • Dany Vohl
  • Martin Gauch +
  • Ralf Gommers
  • Matt Haberland
  • Eric Larson
  • Nikolay Mayorov
  • Sam McCormack +
  • Andrew Nelson
  • Tyler Reddy
  • Pauli Virtanen
  • Huize Wang +
  • Warren Weckesser
  • Joseph Weston +

A total of 14 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 6 years ago

scipy - SciPy 1.3.1

SciPy 1.3.1 is a bug-fix release with no new features compared to 1.3.0.

Authors

  • Matt Haberland
  • Geordie McBain
  • Yu Feng
  • Evgeni Burovski
  • Sturla Molden
  • Tapasweni Pathak
  • Eric Larson
  • Peter Bell
  • Carlos Ramos Carreño +
  • Ralf Gommers
  • David Hagen
  • Antony Lee
  • Ayappan P
  • Tyler Reddy
  • Pauli Virtanen

A total of 15 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 7 years ago

scipy - SciPy 1.2.2

SciPy 1.2.2 Release Notes

SciPy 1.2.2 is a bug-fix release with no new features compared to 1.2.1. Importantly, the SciPy 1.2.2 wheels are built with OpenBLAS 0.3.7.dev to alleviate issues with SkylakeX AVX512 kernels.

Authors

  • CJ Carey
  • Tyler Dawson +
  • Ralf Gommers
  • Kai Striega
  • Andrew Nelson
  • Tyler Reddy
  • Kevin Sheppard +

A total of 7 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy almost 7 years ago

scipy - SciPy 1.3.0

SciPy 1.3.0 Release Notes

SciPy 1.3.0 is the culmination of 5 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been some API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.3.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy 1.13.3 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • Three new stats functions, a rewrite of pearsonr, and an exact computation of the Kolmogorov-Smirnov two-sample test
  • A new Cython API for bounded scalar-function root-finders in scipy.optimize
  • Substantial CSR and CSC sparse matrix indexing performance improvements
  • Added support for interpolation of rotations with continuous angular rate and acceleration in RotationSpline

New features

scipy.interpolate improvements

A new class CubicHermiteSpline is introduced. It is a piecewise-cubic interpolator which matches observed values and first derivatives. Existing cubic interpolators CubicSpline, PchipInterpolator and Akima1DInterpolator were made subclasses of CubicHermiteSpline.

scipy.io improvements

For the Attribute-Relation File Format (ARFF) scipy.io.arff.loadarff now supports relational attributes.

scipy.io.mmread can now parse Matrix Market format files with empty lines.

scipy.linalg improvements

Added wrappers for ?syconv routines, which convert a symmetric matrix given by a triangular matrix factorization into two matrices and vice versa.

scipy.linalg.clarkson_woodruff_transform now uses an algorithm that leverages sparsity. This may provide a 60-90 percent speedup for dense input matrices. Truly sparse input matrices should also benefit from the improved sketch algorithm, which now correctly runs in O(nnz(A)) time.

Added new functions to calculate symmetric Fiedler matrices and Fiedler companion matrices, named scipy.linalg.fiedler and scipy.linalg.fiedler_companion, respectively. These may be used for root finding.

scipy.ndimage improvements

Gaussian filter performances may improve by an order of magnitude in some cases, thanks to removal of a dependence on np.polynomial. This may impact scipy.ndimage.gaussian_filter for example.

scipy.optimize improvements

The scipy.optimize.brute minimizer obtained a new keyword workers, which can be used to parallelize computation.

A Cython API for bounded scalar-function root-finders in scipy.optimize is available in a new module scipy.optimize.cython_optimize via cimport. This API may be used with nogil and prange to loop over an array of function arguments to solve for an array of roots more quickly than with pure Python.

'interior-point' is now the default method for linprog, and 'interior-point' now uses SuiteSparse for sparse problems when the required scikits (scikit-umfpack and scikit-sparse) are available. On benchmark problems (gh-10026), execution time reductions by factors of 2-3 were typical. Also, a new method='revised simplex' has been added. It is not as fast or robust as method='interior-point', but it is a faster, more robust, and equally accurate substitute for the legacy method='simplex'.

differential_evolution can now use a Bounds class to specify the bounds for the optimizing argument of a function.

scipy.optimize.dual_annealing performance improvements related to vectorisation of some internal code.

scipy.signal improvements

Two additional methods of discretization are now supported by scipy.signal.cont2discrete: impulse and foh.

scipy.signal.firls now uses faster solvers

scipy.signal.detrend now has a lower physical memory footprint in some cases, which may be leveraged using the new overwrite_data keyword argument

scipy.signal.firwin pass_zero argument now accepts new string arguments that allow specification of the desired filter type: 'bandpass', 'lowpass', 'highpass', and 'bandstop'

scipy.signal.sosfilt may have improved performance due to lower retention of the global interpreter lock (GIL) in algorithm

scipy.sparse improvements

A new keyword was added to csgraph.dijsktra that allows users to query the shortest path to ANY of the passed in indices, as opposed to the shortest path to EVERY passed index.

scipy.sparse.linalg.lsmr performance has been improved by roughly 10 percent on large problems

Improved performance and reduced physical memory footprint of the algorithm used by scipy.sparse.linalg.lobpcg

CSR and CSC sparse matrix fancy indexing performance has been improved substantially

scipy.spatial improvements

scipy.spatial.ConvexHull now has a good attribute that can be used alongsize the QGn Qhull options to determine which external facets of a convex hull are visible from an external query point.

scipy.spatial.cKDTree.query_ball_point has been modernized to use some newer Cython features, including GIL handling and exception translation. An issue with return_sorted=True and scalar queries was fixed, and a new mode named return_length was added. return_length only computes the length of the returned indices list instead of allocating the array every time.

scipy.spatial.transform.RotationSpline has been added to enable interpolation of rotations with continuous angular rates and acceleration

scipy.stats improvements

Added a new function to compute the Epps-Singleton test statistic, scipy.stats.epps_singleton_2samp, which can be applied to continuous and discrete distributions.

New functions scipy.stats.median_absolute_deviation and scipy.stats.gstd (geometric standard deviation) were added. The scipy.stats.combine_pvalues method now supports pearson, tippett and mudholkar_george pvalue combination methods.

The scipy.stats.ortho_group and scipy.stats.special_ortho_group rvs(dim) functions' algorithms were updated from a O(dim^4) implementation to a O(dim^3) which gives large speed improvements for dim>100.

A rewrite of scipy.stats.pearsonr to use a more robust algorithm, provide meaningful exceptions and warnings on potentially pathological input, and fix at least five separate reported issues in the original implementation.

Improved the precision of hypergeom.logcdf and hypergeom.logsf.

Added exact computation for Kolmogorov-Smirnov (KS) two-sample test, replacing the previously approximate computation for the two-sided test stats.ks_2samp. Also added a one-sided, two-sample KS test, and a keyword alternative to stats.ks_2samp.

Backwards incompatible changes

scipy.interpolate changes

Functions from scipy.interpolate (spleval, spline, splmake, and spltopp) and functions from scipy.misc (bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow, toimage) have been removed. The former set has been deprecated since v0.19.0 and the latter has been deprecated since v1.0.0. Similarly, aliases from scipy.misc (comb, factorial, factorial2, factorialk, logsumexp, pade, info, source, who) which have been deprecated since v1.0.0 are removed. SciPy documentation for v1.1.0 <https://docs.scipy.org/doc/scipy-1.1.0/reference/misc.html>__ can be used to track the new import locations for the relocated functions.

scipy.linalg changes

For pinv, pinv2, and pinvh, the default cutoff values are changed for consistency (see the docs for the actual values).

scipy.optimize changes

The default method for linprog is now 'interior-point'. The method's robustness and speed come at a cost: solutions may not be accurate to machine precision or correspond with a vertex of the polytope defined by the constraints. To revert to the original simplex method, include the argument method='simplex'.

scipy.stats changes

Previously, ks_2samp(data1, data2) would run a two-sided test and return the approximated p-value. The new signature, ks_2samp(data1, data2, alternative="two-sided", method="auto"), still runs the two-sided test by default but returns the exact p-value for small samples and the approximated value for large samples. method="asymp" would be equivalent to the old version but auto is the better choice.

Other changes

Our tutorial has been expanded with a new section on global optimizers

There has been a rework of the stats.distributions tutorials.

scipy.optimize now correctly sets the convergence flag of the result to CONVERR, a convergence error, for bounded scalar-function root-finders if the maximum iterations has been exceeded, disp is false, and full_output is true.

scipy.optimize.curve_fit no longer fails if xdata and ydata dtypes differ; they are both now automatically cast to float64.

scipy.ndimage functions including binary_erosion, binary_closing, and binary_dilation now require an integer value for the number of iterations, which alleviates a number of reported issues.

Fixed normal approximation in case zero_method == "pratt" in scipy.stats.wilcoxon.

Fixes for incorrect probabilities, broadcasting issues and thread-safety related to stats distributions setting member variables inside _argcheck().

scipy.optimize.newton now correctly raises a RuntimeError, when default arguments are used, in the case that a derivative of value zero is obtained, which is a special case of failing to converge.

A draft toolchain roadmap is now available, laying out a compatibility plan including Python versions, C standards, and NumPy versions.

Authors

  • ananyashreyjain +
  • ApamNapat +
  • Scott Calabrese Barton +
  • Christoph Baumgarten
  • Peter Bell +
  • Jacob Blomgren +
  • Doctor Bob +
  • Mana Borwornpadungkitti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Vega Theil Carstensen +
  • Robert Cimrman
  • Forrest Collman +
  • Pietro Cottone +
  • David +
  • Idan David +
  • Christoph Deil
  • Dieter Werthmüller
  • Conner DiPaolo +
  • Dowon
  • Michael Dunphy +
  • Peter Andreas Entschev +
  • Gökçen Eraslan +
  • Johann Faouzi +
  • Yu Feng
  • Piotr Figiel +
  • Matthew H Flamm
  • Franz Forstmayr +
  • Christoph Gohlke
  • Richard Janis Goldschmidt +
  • Ralf Gommers
  • Lars Grueter
  • Sylvain Gubian
  • Matt Haberland
  • Yaroslav Halchenko
  • Charles Harris
  • Lindsey Hiltner
  • JakobStruye +
  • He Jia +
  • Jwink3101 +
  • Greg Kiar +
  • Julius Bier Kirkegaard
  • John Kirkham +
  • Thomas Kluyver
  • Vladimir Korolev +
  • Joseph Kuo +
  • Michael Lamparski +
  • Eric Larson
  • Denis Laxalde
  • Katrin Leinweber
  • Jesse Livezey
  • ludcila +
  • Dhruv Madeka +
  • Magnus +
  • Nikolay Mayorov
  • Mark Mikofski
  • Jarrod Millman
  • Markus Mohrhard +
  • Eric Moore
  • Andrew Nelson
  • Aki Nishimura +
  • OGordon100 +
  • Petar Mlinarić +
  • Stefan Peterson
  • Matti Picus +
  • Ilhan Polat
  • Aaron Pries +
  • Matteo Ravasi +
  • Tyler Reddy
  • Ashton Reimer +
  • Joscha Reimer
  • rfezzani +
  • Riadh +
  • Lucas Roberts
  • Heshy Roskes +
  • Mirko Scholz +
  • Taylor D. Scott +
  • Srikrishna Sekhar +
  • Kevin Sheppard +
  • Sourav Singh
  • skjerns +
  • Kai Striega
  • SyedSaifAliAlvi +
  • Gopi Manohar T +
  • Albert Thomas +
  • Timon +
  • Paul van Mulbregt
  • Jacob Vanderplas
  • Daniel Vargas +
  • Pauli Virtanen
  • VNMabus +
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Nate Yoder +
  • Roman Yurchak

A total of 97 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 7 years ago

scipy - SciPy 1.3.0rc2

SciPy 1.3.0 Release Notes

Note: Scipy 1.3.0 is not released yet!

SciPy 1.3.0 is the culmination of 5 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been some API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.3.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy 1.13.3 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • Three new stats functions, a rewrite of pearsonr, and an exact computation of the Kolmogorov-Smirnov two-sample test
  • A new Cython API for bounded scalar-function root-finders in scipy.optimize
  • Substantial CSR and CSC sparse matrix indexing performance improvements
  • Added support for interpolation of rotations with continuous angular rate and acceleration in RotationSpline

New features

scipy.interpolate improvements

A new class CubicHermiteSpline is introduced. It is a piecewise-cubic interpolator which matches observed values and first derivatives. Existing cubic interpolators CubicSpline, PchipInterpolator and Akima1DInterpolator were made subclasses of CubicHermiteSpline.

scipy.io improvements

For the Attribute-Relation File Format (ARFF) scipy.io.arff.loadarff now supports relational attributes.

scipy.io.mmread can now parse Matrix Market format files with empty lines.

scipy.linalg improvements

Added wrappers for ?syconv routines, which convert a symmetric matrix given by a triangular matrix factorization into two matrices and vice versa.

scipy.linalg.clarkson_woodruff_transform now uses an algorithm that leverages sparsity. This may provide a 60-90 percent speedup for dense input matrices. Truly sparse input matrices should also benefit from the improved sketch algorithm, which now correctly runs in O(nnz(A)) time.

Added new functions to calculate symmetric Fiedler matrices and Fiedler companion matrices, named scipy.linalg.fiedler and scipy.linalg.fiedler_companion, respectively. These may be used for root finding.

scipy.ndimage improvements

Gaussian filter performances may improve by an order of magnitude in some cases, thanks to removal of a dependence on np.polynomial. This may impact scipy.ndimage.gaussian_filter for example.

scipy.optimize improvements

The scipy.optimize.brute minimizer obtained a new keyword workers, which can be used to parallelize computation.

A Cython API for bounded scalar-function root-finders in scipy.optimize is available in a new module scipy.optimize.cython_optimize via cimport. This API may be used with nogil and prange to loop over an array of function arguments to solve for an array of roots more quickly than with pure Python.

'interior-point' is now the default method for linprog, and 'interior-point' now uses SuiteSparse for sparse problems when the required scikits (scikit-umfpack and scikit-sparse) are available. On benchmark problems (gh-10026), execution time reductions by factors of 2-3 were typical. Also, a new method='revised simplex' has been added. It is not as fast or robust as method='interior-point', but it is a faster, more robust, and equally accurate substitute for the legacy method='simplex'.

differential_evolution can now use a Bounds class to specify the bounds for the optimizing argument of a function.

scipy.optimize.dual_annealing performance improvements related to vectorisation of some internal code.

scipy.signal improvements

Two additional methods of discretization are now supported by scipy.signal.cont2discrete: impulse and foh.

scipy.signal.firls now uses faster solvers

scipy.signal.detrend now has a lower physical memory footprint in some cases, which may be leveraged using the new overwrite_data keyword argument

scipy.signal.firwin pass_zero argument now accepts new string arguments that allow specification of the desired filter type: 'bandpass', 'lowpass', 'highpass', and 'bandstop'

scipy.signal.sosfilt may have improved performance due to lower retention of the global interpreter lock (GIL) in algorithm

scipy.sparse improvements

A new keyword was added to csgraph.dijsktra that allows users to query the shortest path to ANY of the passed in indices, as opposed to the shortest path to EVERY passed index.

scipy.sparse.linalg.lsmr performance has been improved by roughly 10 percent on large problems

Improved performance and reduced physical memory footprint of the algorithm used by scipy.sparse.linalg.lobpcg

CSR and CSC sparse matrix fancy indexing performance has been improved substantially

scipy.spatial improvements

scipy.spatial.ConvexHull now has a good attribute that can be used alongsize the QGn Qhull options to determine which external facets of a convex hull are visible from an external query point.

scipy.spatial.cKDTree.query_ball_point has been modernized to use some newer Cython features, including GIL handling and exception translation. An issue with return_sorted=True and scalar queries was fixed, and a new mode named return_length was added. return_length only computes the length of the returned indices list instead of allocating the array every time.

scipy.spatial.transform.RotationSpline has been added to enable interpolation of rotations with continuous angular rates and acceleration

scipy.stats improvements

Added a new function to compute the Epps-Singleton test statistic, scipy.stats.epps_singleton_2samp, which can be applied to continuous and discrete distributions.

New functions scipy.stats.median_absolute_deviation and scipy.stats.gstd (geometric standard deviation) were added. The scipy.stats.combine_pvalues method now supports pearson, tippett and mudholkar_george pvalue combination methods.

The scipy.stats.ortho_group and scipy.stats.special_ortho_group rvs(dim) functions' algorithms were updated from a O(dim^4) implementation to a O(dim^3) which gives large speed improvements for dim>100.

A rewrite of scipy.stats.pearsonr to use a more robust algorithm, provide meaningful exceptions and warnings on potentially pathological input, and fix at least five separate reported issues in the original implementation.

Improved the precision of hypergeom.logcdf and hypergeom.logsf.

Added exact computation for Kolmogorov-Smirnov (KS) two-sample test, replacing the previously approximate computation for the two-sided test stats.ks_2samp. Also added a one-sided, two-sample KS test, and a keyword alternative to stats.ks_2samp.

Backwards incompatible changes

scipy.interpolate changes

Functions from scipy.interpolate (spleval, spline, splmake, and spltopp) and functions from scipy.misc (bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow, toimage) have been removed. The former set has been deprecated since v0.19.0 and the latter has been deprecated since v1.0.0. Similarly, aliases from scipy.misc (comb, factorial, factorial2, factorialk, logsumexp, pade, info, source, who) which have been deprecated since v1.0.0 are removed. SciPy documentation for v1.1.0 <https://docs.scipy.org/doc/scipy-1.1.0/reference/misc.html>__ can be used to track the new import locations for the relocated functions.

scipy.linalg changes

For pinv, pinv2, and pinvh, the default cutoff values are changed for consistency (see the docs for the actual values).

scipy.stats changes

Previously, ks_2samp(data1, data2) would run a two-sided test and return the approximated p-value. The new signature, ks_2samp(data1, data2, alternative="two-sided", method="auto"), still runs the two-sided test by default but returns the exact p-value for small samples and the approximated value for large samples. method="asymp" would be equivalent to the old version but auto is the better choice.

Other changes

Our tutorial has been expanded with a new section on global optimizers

There has been a rework of the stats.distributions tutorials.

scipy.optimize now correctly sets the convergence flag of the result to CONVERR, a convergence error, for bounded scalar-function root-finders if the maximum iterations has been exceeded, disp is false, and full_output is true.

scipy.optimize.curve_fit no longer fails if xdata and ydata dtypes differ; they are both now automatically cast to float64.

scipy.ndimage functions including binary_erosion, binary_closing, and binary_dilation now require an integer value for the number of iterations, which alleviates a number of reported issues.

Fixed normal approximation in case zero_method == "pratt" in scipy.stats.wilcoxon.

Fixes for incorrect probabilities, broadcasting issues and thread-safety related to stats distributions setting member variables inside _argcheck().

scipy.optimize.newton now correctly raises a RuntimeError, when default arguments are used, in the case that a derivative of value zero is obtained, which is a special case of failing to converge.

A draft toolchain roadmap is now available, laying out a compatibility plan including Python versions, C standards, and NumPy versions.

Authors

  • ananyashreyjain +
  • ApamNapat +
  • Scott Calabrese Barton +
  • Christoph Baumgarten
  • Peter Bell +
  • Jacob Blomgren +
  • Doctor Bob +
  • Mana Borwornpadungkitti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Vega Theil Carstensen +
  • Robert Cimrman
  • Forrest Collman +
  • Pietro Cottone +
  • David +
  • Idan David +
  • Christoph Deil
  • Dieter Werthmüller
  • Conner DiPaolo +
  • Dowon
  • Michael Dunphy +
  • Peter Andreas Entschev +
  • Gökçen Eraslan +
  • Johann Faouzi +
  • Yu Feng
  • Piotr Figiel +
  • Matthew H Flamm
  • Franz Forstmayr +
  • Christoph Gohlke
  • Richard Janis Goldschmidt +
  • Ralf Gommers
  • Lars Grueter
  • Sylvain Gubian
  • Matt Haberland
  • Yaroslav Halchenko
  • Charles Harris
  • Lindsey Hiltner
  • JakobStruye +
  • He Jia +
  • Jwink3101 +
  • Greg Kiar +
  • Julius Bier Kirkegaard
  • John Kirkham +
  • Thomas Kluyver
  • Vladimir Korolev +
  • Joseph Kuo +
  • Michael Lamparski +
  • Eric Larson
  • Denis Laxalde
  • Katrin Leinweber
  • Jesse Livezey
  • ludcila +
  • Dhruv Madeka +
  • Magnus +
  • Nikolay Mayorov
  • Mark Mikofski
  • Jarrod Millman
  • Markus Mohrhard +
  • Eric Moore
  • Andrew Nelson
  • Aki Nishimura +
  • OGordon100 +
  • Petar Mlinarić +
  • Stefan Peterson
  • Matti Picus +
  • Ilhan Polat
  • Aaron Pries +
  • Matteo Ravasi +
  • Tyler Reddy
  • Ashton Reimer +
  • Joscha Reimer
  • rfezzani +
  • Riadh +
  • Lucas Roberts
  • Heshy Roskes +
  • Mirko Scholz +
  • Taylor D. Scott +
  • Srikrishna Sekhar +
  • Kevin Sheppard +
  • Sourav Singh
  • skjerns +
  • Kai Striega
  • SyedSaifAliAlvi +
  • Gopi Manohar T +
  • Albert Thomas +
  • Timon +
  • Paul van Mulbregt
  • Jacob Vanderplas
  • Daniel Vargas +
  • Pauli Virtanen
  • VNMabus +
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Nate Yoder +
  • Roman Yurchak

A total of 97 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 7 years ago

scipy - SciPy 1.3.0rc1

SciPy 1.3.0 Release Notes

Note: Scipy 1.3.0 is not released yet!

SciPy 1.3.0 is the culmination of 5 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been some API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.3.x branch, and on adding new features on the master branch.

This release requires Python 3.5+ and NumPy 1.13.3 or greater.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • Three new stats functions, a rewrite of pearsonr, and an exact computation of the Kolmogorov-Smirnov two-sample test
  • A new Cython API for bounded scalar-function root-finders in scipy.optimize
  • Substantial CSR and CSC sparse matrix indexing performance improvements
  • Added support for interpolation of rotations with continuous angular rate and acceleration in RotationSpline

New features

scipy.interpolate improvements

A new class CubicHermiteSpline is introduced. It is a piecewise-cubic interpolator which matches observed values and first derivatives. Existing cubic interpolators CubicSpline, PchipInterpolator and Akima1DInterpolator were made subclasses of CubicHermiteSpline.

scipy.io improvements

For the Attribute-Relation File Format (ARFF) scipy.io.arff.loadarff now supports relational attributes.

scipy.io.mmread can now parse Matrix Market format files with empty lines.

scipy.linalg improvements

Added wrappers for ?syconv routines, which convert a symmetric matrix given by a triangular matrix factorization into two matrices and vice versa.

scipy.linalg.clarkson_woodruff_transform now uses an algorithm that leverages sparsity. This may provide a 60-90 percent speedup for dense input matrices. Truly sparse input matrices should also benefit from the improved sketch algorithm, which now correctly runs in O(nnz(A)) time.

Added new functions to calculate symmetric Fiedler matrices and Fiedler companion matrices, named scipy.linalg.fiedler and scipy.linalg.fiedler_companion, respectively. These may be used for root finding.

scipy.ndimage improvements

Gaussian filter performances may improve by an order of magnitude in some cases, thanks to removal of a dependence on np.polynomial. This may impact scipy.ndimage.gaussian_filter for example.

scipy.optimize improvements

The scipy.optimize.brute minimizer obtained a new keyword workers, which can be used to parallelize computation.

A Cython API for bounded scalar-function root-finders in scipy.optimize is available in a new module scipy.optimize.cython_optimize via cimport. This API may be used with nogil and prange to loop over an array of function arguments to solve for an array of roots more quickly than with pure Python.

'interior-point' is now the default method for linprog, and 'interior-point' now uses SuiteSparse for sparse problems when the required scikits (scikit-umfpack and scikit-sparse) are available. On benchmark problems (gh-10026), execution time reductions by factors of 2-3 were typical. Also, a new method='revised simplex' has been added. It is not as fast or robust as method='interior-point', but it is a faster, more robust, and equally accurate substitute for the legacy method='simplex'.

differential_evolution can now use a Bounds class to specify the bounds for the optimizing argument of a function.

scipy.optimize.dual_annealing performance improvements related to vectorisation of some internal code.

scipy.signal improvements

Two additional methods of discretization are now supported by scipy.signal.cont2discrete: impulse and foh.

scipy.signal.firls now uses faster solvers

scipy.signal.detrend now has a lower physical memory footprint in some cases, which may be leveraged using the new overwrite_data keyword argument

scipy.signal.firwin pass_zero argument now accepts new string arguments that allow specification of the desired filter type: 'bandpass', 'lowpass', 'highpass', and 'bandstop'

scipy.signal.sosfilt may have improved performance due to lower retention of the global interpreter lock (GIL) in algorithm

scipy.sparse improvements

A new keyword was added to csgraph.dijsktra that allows users to query the shortest path to ANY of the passed in indices, as opposed to the shortest path to EVERY passed index.

scipy.sparse.linalg.lsmr performance has been improved by roughly 10 percent on large problems

Improved performance and reduced physical memory footprint of the algorithm used by scipy.sparse.linalg.lobpcg

CSR and CSC sparse matrix fancy indexing performance has been improved substantially

scipy.spatial improvements

scipy.spatial.ConvexHull now has a good attribute that can be used alongsize the QGn Qhull options to determine which external facets of a convex hull are visible from an external query point.

scipy.spatial.cKDTree.query_ball_point has been modernized to use some newer Cython features, including GIL handling and exception translation. An issue with return_sorted=True and scalar queries was fixed, and a new mode named return_length was added. return_length only computes the length of the returned indices list instead of allocating the array every time.

scipy.spatial.transform.RotationSpline has been added to enable interpolation of rotations with continuous angular rates and acceleration

scipy.stats improvements

Added a new function to compute the Epps-Singleton test statistic, scipy.stats.epps_singleton_2samp, which can be applied to continuous and discrete distributions.

New functions scipy.stats.median_absolute_deviation and scipy.stats.gstd (geometric standard deviation) were added. The scipy.stats.combine_pvalues method now supports pearson, tippett and mudholkar_george pvalue combination methods.

The scipy.stats.ortho_group and scipy.stats.special_ortho_group rvs(dim) functions' algorithms were updated from a O(dim^4) implementation to a O(dim^3) which gives large speed improvements for dim>100.

A rewrite of scipy.stats.pearsonr to use a more robust algorithm, provide meaningful exceptions and warnings on potentially pathological input, and fix at least five separate reported issues in the original implementation.

Improved the precision of hypergeom.logcdf and hypergeom.logsf.

Added exact computation for Kolmogorov-Smirnov (KS) two-sample test, replacing the previously approximate computation for the two-sided test stats.ks_2samp. Also added a one-sided, two-sample KS test, and a keyword alternative to stats.ks_2samp.

Backwards incompatible changes

scipy.interpolate changes

Functions from scipy.interpolate (spleval, spline, splmake, and spltopp) and functions from scipy.misc (bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow, toimage) have been removed. The former set has been deprecated since v0.19.0 and the latter has been deprecated since v1.0.0. Similarly, aliases from scipy.misc (comb, factorial, factorial2, factorialk, logsumexp, pade, info, source, who) which have been deprecated since v1.0.0 are removed. SciPy documentation for v1.1.0 <https://docs.scipy.org/doc/scipy-1.1.0/reference/misc.html>__ can be used to track the new import locations for the relocated functions.

scipy.linalg changes

For pinv, pinv2, and pinvh, the default cutoff values are changed for consistency (see the docs for the actual values).

scipy.stats changes

Previously, ks_2samp(data1, data2) would run a two-sided test and return the approximated p-value. The new signature, ks_2samp(data1, data2, alternative="two-sided", method="auto"), still runs the two-sided test by default but returns the exact p-value for small samples and the approximated value for large samples. method="asymp" would be equivalent to the old version but auto is the better choice.

Other changes

Our tutorial has been expanded with a new section on global optimizers

There has been a rework of the stats.distributions tutorials.

scipy.optimize now correctly sets the convergence flag of the result to CONVERR, a convergence error, for bounded scalar-function root-finders if the maximum iterations has been exceeded, disp is false, and full_output is true.

scipy.optimize.curve_fit no longer fails if xdata and ydata dtypes differ; they are both now automatically cast to float64.

scipy.ndimage functions including binary_erosion, binary_closing, and binary_dilation now require an integer value for the number of iterations, which alleviates a number of reported issues.

Fixed normal approximation in case zero_method == "pratt" in scipy.stats.wilcoxon.

Fixes for incorrect probabilities, broadcasting issues and thread-safety related to stats distributions setting member variables inside _argcheck().

scipy.optimize.newton now correctly raises a RuntimeError, when default arguments are used, in the case that a derivative of value zero is obtained, which is a special case of failing to converge.

A draft toolchain roadmap is now available, laying out a compatibility plan including Python versions, C standards, and NumPy versions.

Authors

  • ananyashreyjain +
  • ApamNapat +
  • Scott Calabrese Barton +
  • Christoph Baumgarten
  • Peter Bell +
  • Jacob Blomgren +
  • Doctor Bob +
  • Mana Borwornpadungkitti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Vega Theil Carstensen +
  • Robert Cimrman
  • Forrest Collman +
  • Pietro Cottone +
  • David +
  • Idan David +
  • Christoph Deil
  • Dieter Werthmüller
  • Conner DiPaolo +
  • Dowon
  • Michael Dunphy +
  • Peter Andreas Entschev +
  • Gökçen Eraslan +
  • Johann Faouzi +
  • Yu Feng
  • Piotr Figiel +
  • Matthew H Flamm
  • Franz Forstmayr +
  • Christoph Gohlke
  • Richard Janis Goldschmidt +
  • Ralf Gommers
  • Lars Grueter
  • Sylvain Gubian
  • Matt Haberland
  • Yaroslav Halchenko
  • Charles Harris
  • Lindsey Hiltner
  • JakobStruye +
  • He Jia +
  • Jwink3101 +
  • Greg Kiar +
  • Julius Bier Kirkegaard
  • John Kirkham +
  • Thomas Kluyver
  • Vladimir Korolev +
  • Joseph Kuo +
  • Michael Lamparski +
  • Eric Larson
  • Denis Laxalde
  • Katrin Leinweber
  • Jesse Livezey
  • ludcila +
  • Dhruv Madeka +
  • Magnus +
  • Nikolay Mayorov
  • Mark Mikofski
  • Jarrod Millman
  • Markus Mohrhard +
  • Eric Moore
  • Andrew Nelson
  • Aki Nishimura +
  • OGordon100 +
  • Petar Mlinarić +
  • Stefan Peterson
  • Matti Picus +
  • Ilhan Polat
  • Aaron Pries +
  • Matteo Ravasi +
  • Tyler Reddy
  • Ashton Reimer +
  • Joscha Reimer
  • rfezzani +
  • Riadh +
  • Lucas Roberts
  • Heshy Roskes +
  • Mirko Scholz +
  • Taylor D. Scott +
  • Srikrishna Sekhar +
  • Kevin Sheppard +
  • Sourav Singh
  • skjerns +
  • Kai Striega
  • SyedSaifAliAlvi +
  • Gopi Manohar T +
  • Albert Thomas +
  • Timon +
  • Paul van Mulbregt
  • Jacob Vanderplas
  • Daniel Vargas +
  • Pauli Virtanen
  • VNMabus +
  • Stefan van der Walt
  • Warren Weckesser
  • Josh Wilson
  • Nate Yoder +
  • Roman Yurchak

A total of 97 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy about 7 years ago

scipy - SciPy 1.2.1

SciPy 1.2.1 Release Notes

SciPy 1.2.1 is a bug-fix release with no new features compared to 1.2.0. Most importantly, it solves the issue that 1.2.0 cannot be installed from source on Python 2.7 because of non-ASCII character issues.

It is also notable that SciPy 1.2.1 wheels were built with OpenBLAS 0.3.5.dev, which may alleviate some linear algebra issues observed in SciPy 1.2.0.

Authors

  • Eric Larson
  • Mark Mikofski
  • Evgeni Burovski
  • Ralf Gommers
  • Eric Moore
  • Tyler Reddy

- Python
Published by tylerjereddy over 7 years ago

scipy - SciPy 1.2.0

SciPy 1.2.0 Release Notes

SciPy 1.2.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.2.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

Note: This will be the last SciPy release to support Python 2.7. Consequently, the 1.2.x series will be a long term support (LTS) release; we will backport bug fixes until 1 Jan 2020.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • 1-D root finding improvements with a new solver, toms748, and a new unified interface, root_scalar
  • New dual_annealing optimization method that combines stochastic and local deterministic searching
  • A new optimization algorithm, shgo (simplicial homology global optimization) for derivative free optimization problems
  • A new category of quaternion-based transformations are available in scipy.spatial.transform

New features

scipy.ndimage improvements

Proper spline coefficient calculations have been added for the mirror, wrap, and reflect modes of scipy.ndimage.rotate

scipy.fftpack improvements

DCT-IV, DST-IV, DCT-I, and DST-I orthonormalization are now supported in scipy.fftpack.

scipy.interpolate improvements

scipy.interpolate.pade now accepts a new argument for the order of the numerator

scipy.cluster improvements

scipy.cluster.vq.kmeans2 gained a new initialization method, kmeans++.

scipy.special improvements

The function softmax was added to scipy.special.

scipy.optimize improvements

The one-dimensional nonlinear solvers have been given a unified interface scipy.optimize.root_scalar, similar to the scipy.optimize.root interface for multi-dimensional solvers. scipy.optimize.root_scalar(f, bracket=[a ,b], method="brenth") is equivalent to scipy.optimize.brenth(f, a ,b). If no method is specified, an appropriate one will be selected based upon the bracket and the number of derivatives available.

The so-called Algorithm 748 of Alefeld, Potra and Shi for root-finding within an enclosing interval has been added as scipy.optimize.toms748. This provides guaranteed convergence to a root with convergence rate per function evaluation of approximately 1.65 (for sufficiently well-behaved functions.)

differential_evolution now has the updating and workers keywords. The first chooses between continuous updating of the best solution vector (the default), or once per generation. Continuous updating can lead to faster convergence. The workers keyword accepts an int or map-like callable, and parallelises the solver (having the side effect of updating once per generation). Supplying an int evaluates the trial solutions in N parallel parts. Supplying a map-like callable allows other parallelisation approaches (such as mpi4py, or joblib) to be used.

dual_annealing (and shgo below) is a powerful new general purpose global optizimation (GO) algorithm. dual_annealing uses two annealing processes to accelerate the convergence towards the global minimum of an objective mathematical function. The first annealing process controls the stochastic Markov chain searching and the second annealing process controls the deterministic minimization. So, dual annealing is a hybrid method that takes advantage of stochastic and local deterministic searching in an efficient way.

shgo (simplicial homology global optimization) is a similar algorithm appropriate for solving black box and derivative free optimization (DFO) problems. The algorithm generally converges to the global solution in finite time. The convergence holds for non-linear inequality and equality constraints. In addition to returning a global minimum, the algorithm also returns any other global and local minima found after every iteration. This makes it useful for exploring the solutions in a domain.

scipy.optimize.newton can now accept a scalar or an array

MINPACK usage is now thread-safe, such that MINPACK + callbacks may be used on multiple threads.

scipy.signal improvements

Digital filter design functions now include a parameter to specify the sampling rate. Previously, digital filters could only be specified using normalized frequency, but different functions used different scales (e.g. 0 to 1 for butter vs 0 to π for freqz), leading to errors and confusion. With the fs parameter, ordinary frequencies can now be entered directly into functions, with the normalization handled internally.

find_peaks and related functions no longer raise an exception if the properties of a peak have unexpected values (e.g. a prominence of 0). A PeakPropertyWarning is given instead.

The new keyword argument plateau_size was added to find_peaks. plateau_size may be used to select peaks based on the length of the flat top of a peak.

welch() and csd() methods in scipy.signal now support calculation of a median average PSD, using average='mean' keyword

scipy.sparse improvements

The scipy.sparse.bsr_matrix.tocsr method is now implemented directly instead of converting via COO format, and the scipy.sparse.bsr_matrix.tocsc method is now also routed via CSR conversion instead of COO. The efficiency of both conversions is now improved.

The issue where SuperLU or UMFPACK solvers crashed on matrices with non-canonical format in scipy.sparse.linalg was fixed. The solver wrapper canonicalizes the matrix if necessary before calling the SuperLU or UMFPACK solver.

The largest option of scipy.sparse.linalg.lobpcg() was fixed to have a correct (and expected) behavior. The order of the eigenvalues was made consistent with the ARPACK solver (eigs()), i.e. ascending for the smallest eigenvalues, and descending for the largest eigenvalues.

The scipy.sparse.random function is now faster and also supports integer and complex values by passing the appropriate value to the dtype argument.

scipy.spatial improvements

The function scipy.spatial.distance.jaccard was modified to return 0 instead of np.nan when two all-zero vectors are compared.

Support for the Jensen Shannon distance, the square-root of the divergence, has been added under scipy.spatial.distance.jensenshannon

An optional keyword was added to the function scipy.spatial.cKDTree.query_ball_point() to sort or not sort the returned indices. Not sorting the indices can speed up calls.

A new category of quaternion-based transformations are available in scipy.spatial.transform, including spherical linear interpolation of rotations (Slerp), conversions to and from quaternions, Euler angles, and general rotation and inversion capabilities (spatial.transform.Rotation), and uniform random sampling of 3D rotations (spatial.transform.Rotation.random).

scipy.stats improvements

The Yeo-Johnson power transformation is now supported (yeojohnson, yeojohnson_llf, yeojohnson_normmax, yeojohnson_normplot). Unlike the Box-Cox transformation, the Yeo-Johnson transformation can accept negative values.

Added a general method to sample random variates based on the density only, in the new function rvs_ratio_uniforms.

The Yule-Simon distribution (yulesimon) was added -- this is a new discrete probability distribution.

stats and mstats now have access to a new regression method, siegelslopes, a robust linear regression algorithm

scipy.stats.gaussian_kde now has the ability to deal with weighted samples, and should have a modest improvement in performance

Levy Stable Parameter Estimation, PDF, and CDF calculations are now supported for scipy.stats.levy_stable.

The Brunner-Munzel test is now available as brunnermunzel in stats and mstats

scipy.linalg improvements

scipy.linalg.lapack now exposes the LAPACK routines using the Rectangular Full Packed storage (RFP) for upper triangular, lower triangular, symmetric, or Hermitian matrices; the upper trapezoidal fat matrix RZ decomposition routines are now available as well.

Deprecated features

The functions hyp2f0, hyp1f2 and hyp3f0 in scipy.special have been deprecated.

Backwards incompatible changes

LAPACK version 3.4.0 or later is now required. Building with Apple Accelerate is no longer supported.

The function scipy.linalg.subspace_angles(A, B) now gives correct results for all angles. Before this, the function only returned correct values for those angles which were greater than pi/4.

Support for the Bento build system has been removed. Bento has not been maintained for several years, and did not have good Python 3 or wheel support, hence it was time to remove it.

The required signature of scipy.optimize.lingprog method=simplex callback function has changed. Before iteration begins, the simplex solver first converts the problem into a standard form that does not, in general, have the same variables or constraints as the problem defined by the user. Previously, the simplex solver would pass a user-specified callback function several separate arguments, such as the current solution vector xk, corresponding to this standard form problem. Unfortunately, the relationship between the standard form problem and the user-defined problem was not documented, limiting the utility of the information passed to the callback function.

In addition to numerous bug fix changes, the simplex solver now passes a user-specified callback function a single OptimizeResult object containing information that corresponds directly to the user-defined problem. In future releases, this OptimizeResult object may be expanded to include additional information, such as variables corresponding to the standard-form problem and information concerning the relationship between the standard-form and user-defined problems.

The implementation of scipy.sparse.random has changed, and this affects the numerical values returned for both sparse.random and sparse.rand for some matrix shapes and a given seed.

scipy.optimize.newton will no longer use Halley's method in cases where it negatively impacts convergence

Other changes

Authors

  • @endolith
  • @luzpaz
  • Hameer Abbasi +
  • akahard2dj +
  • Anton Akhmerov
  • Joseph Albert
  • alexthomas93 +
  • ashish +
  • atpage +
  • Blair Azzopardi +
  • Yoshiki Vázquez Baeza
  • Bence Bagi +
  • Christoph Baumgarten
  • Lucas Bellomo +
  • BH4 +
  • Aditya Bharti
  • Max Bolingbroke
  • François Boulogne
  • Ward Bradt +
  • Matthew Brett
  • Evgeni Burovski
  • Rafał Byczek +
  • Alfredo Canziani +
  • CJ Carey
  • Lucía Cheung +
  • Poom Chiarawongse +
  • Jeanne Choo +
  • Robert Cimrman
  • Graham Clenaghan +
  • cynthia-rempel +
  • Johannes Damp +
  • Jaime Fernandez del Rio
  • Dowon +
  • emmi474 +
  • Stefan Endres +
  • Thomas Etherington +
  • Piotr Figiel
  • Alex Fikl +
  • fo40225 +
  • Joseph Fox-Rabinovitz
  • Lars G
  • Abhinav Gautam +
  • Stiaan Gerber +
  • C.A.M. Gerlach +
  • Ralf Gommers
  • Todd Goodall
  • Lars Grueter +
  • Sylvain Gubian +
  • Matt Haberland
  • David Hagen
  • Will Handley +
  • Charles Harris
  • Ian Henriksen
  • Thomas Hisch +
  • Theodore Hu
  • Michael Hudson-Doyle +
  • Nicolas Hug +
  • jakirkham +
  • Jakob Jakobson +
  • James +
  • Jan Schlüter
  • jeanpauphilet +
  • josephmernst +
  • Kai +
  • Kai-Striega +
  • kalash04 +
  • Toshiki Kataoka +
  • Konrad0 +
  • Tom Krauss +
  • Johannes Kulick
  • Lars Grüter +
  • Eric Larson
  • Denis Laxalde
  • Will Lee +
  • Katrin Leinweber +
  • Yin Li +
  • P. L. Lim +
  • Jesse Livezey +
  • Duncan Macleod +
  • MatthewFlamm +
  • Nikolay Mayorov
  • Mike McClurg +
  • Christian Meyer +
  • Mark Mikofski
  • Naoto Mizuno +
  • mohmmadd +
  • Nathan Musoke
  • Anju Geetha Nair +
  • Andrew Nelson
  • Ayappan P +
  • Nick Papior
  • Haesun Park +
  • Ronny Pfannschmidt +
  • pijyoi +
  • Ilhan Polat
  • Anthony Polloreno +
  • Ted Pudlik
  • puenka
  • Eric Quintero
  • Pradeep Reddy Raamana +
  • Vyas Ramasubramani +
  • Ramon Viñas +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro
  • richardjgowers +
  • Rob +
  • robbystk +
  • Lucas Roberts +
  • rohan +
  • Joaquin Derrac Rus +
  • Josua Sassen +
  • Bruce Sharpe +
  • Max Shinn +
  • Scott Sievert
  • Sourav Singh
  • Strahinja Lukić +
  • Kai Striega +
  • Shinya SUZUKI +
  • Mike Toews +
  • Piotr Uchwat
  • Miguel de Val-Borro +
  • Nicky van Foreest
  • Paul van Mulbregt
  • Gael Varoquaux
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Joshua Wharton +
  • Bernhard M. Wiedemann +
  • Eric Wieser
  • Josh Wilson
  • Tony Xiang +
  • Roman Yurchak +
  • Roy Zywina +

A total of 137 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 7 years ago

scipy - SciPy 1.2.0rc2

SciPy 1.2.0 Release Notes

Note: Scipy 1.2.0 is not released yet!

SciPy 1.2.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.2.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

.. note:: This will be the last SciPy release to support Python 2.7. Consequently, the 1.2.x series will be a long term support (LTS) release; we will backport bug fixes until 1 Jan 2020.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • 1-D root finding improvements with a new solver, toms748, and a new unified interface, root_scalar
  • New dual_annealing optimization method that combines stochastic and local deterministic searching
  • A new optimization algorithm, shgo (simplicial homology global optimization) for derivative free optimization problems
  • A new category of quaternion-based transformations are available in scipy.spatial.transform

New features

scipy.ndimage improvements

Proper spline coefficient calculations have been added for the mirror, wrap, and reflect modes of scipy.ndimage.rotate

scipy.fftpack improvements

DCT-IV, DST-IV, DCT-I, and DST-I orthonormalization are now supported in scipy.fftpack.

scipy.interpolate improvements

scipy.interpolate.pade now accepts a new argument for the order of the numerator

scipy.cluster improvements

scipy.cluster.vq.kmeans2 gained a new initialization method, kmeans++.

scipy.special improvements

The function softmax was added to scipy.special.

scipy.optimize improvements

The one-dimensional nonlinear solvers have been given a unified interface scipy.optimize.root_scalar, similar to the scipy.optimize.root interface for multi-dimensional solvers. scipy.optimize.root_scalar(f, bracket=[a ,b], method="brenth") is equivalent to scipy.optimize.brenth(f, a ,b). If no method is specified, an appropriate one will be selected based upon the bracket and the number of derivatives available.

The so-called Algorithm 748 of Alefeld, Potra and Shi for root-finding within an enclosing interval has been added as scipy.optimize.toms748. This provides guaranteed convergence to a root with convergence rate per function evaluation of approximately 1.65 (for sufficiently well-behaved functions.)

differential_evolution now has the updating and workers keywords. The first chooses between continuous updating of the best solution vector (the default), or once per generation. Continuous updating can lead to faster convergence. The workers keyword accepts an int or map-like callable, and parallelises the solver (having the side effect of updating once per generation). Supplying an int evaluates the trial solutions in N parallel parts. Supplying a map-like callable allows other parallelisation approaches (such as mpi4py, or joblib) to be used.

dual_annealing (and shgo below) is a powerful new general purpose global optizimation (GO) algorithm. dual_annealing uses two annealing processes to accelerate the convergence towards the global minimum of an objective mathematical function. The first annealing process controls the stochastic Markov chain searching and the second annealing process controls the deterministic minimization. So, dual annealing is a hybrid method that takes advantage of stochastic and local deterministic searching in an efficient way.

shgo (simplicial homology global optimization) is a similar algorithm appropriate for solving black box and derivative free optimization (DFO) problems. The algorithm generally converges to the global solution in finite time. The convergence holds for non-linear inequality and equality constraints. In addition to returning a global minimum, the algorithm also returns any other global and local minima found after every iteration. This makes it useful for exploring the solutions in a domain.

scipy.optimize.newton can now accept a scalar or an array

MINPACK usage is now thread-safe, such that MINPACK + callbacks may be used on multiple threads.

scipy.signal improvements

Digital filter design functions now include a parameter to specify the sampling rate. Previously, digital filters could only be specified using normalized frequency, but different functions used different scales (e.g. 0 to 1 for butter vs 0 to π for freqz), leading to errors and confusion. With the fs parameter, ordinary frequencies can now be entered directly into functions, with the normalization handled internally.

find_peaks and related functions no longer raise an exception if the properties of a peak have unexpected values (e.g. a prominence of 0). A PeakPropertyWarning is given instead.

The new keyword argument plateau_size was added to find_peaks. plateau_size may be used to select peaks based on the length of the flat top of a peak.

welch() and csd() methods in scipy.signal now support calculation of a median average PSD, using average='mean' keyword

scipy.sparse improvements

The scipy.sparse.bsr_matrix.tocsr method is now implemented directly instead of converting via COO format, and the scipy.sparse.bsr_matrix.tocsc method is now also routed via CSR conversion instead of COO. The efficiency of both conversions is now improved.

The issue where SuperLU or UMFPACK solvers crashed on matrices with non-canonical format in scipy.sparse.linalg was fixed. The solver wrapper canonicalizes the matrix if necessary before calling the SuperLU or UMFPACK solver.

The largest option of scipy.sparse.linalg.lobpcg() was fixed to have a correct (and expected) behavior. The order of the eigenvalues was made consistent with the ARPACK solver (eigs()), i.e. ascending for the smallest eigenvalues, and descending for the largest eigenvalues.

The scipy.sparse.random function is now faster and also supports integer and complex values by passing the appropriate value to the dtype argument.

scipy.spatial improvements

The function scipy.spatial.distance.jaccard was modified to return 0 instead of np.nan when two all-zero vectors are compared.

Support for the Jensen Shannon distance, the square-root of the divergence, has been added under scipy.spatial.distance.jensenshannon

An optional keyword was added to the function scipy.spatial.cKDTree.query_ball_point() to sort or not sort the returned indices. Not sorting the indices can speed up calls.

A new category of quaternion-based transformations are available in scipy.spatial.transform, including spherical linear interpolation of rotations (Slerp), conversions to and from quaternions, Euler angles, and general rotation and inversion capabilities (spatial.transform.Rotation), and uniform random sampling of 3D rotations (spatial.transform.Rotation.random).

scipy.stats improvements

The Yeo-Johnson power transformation is now supported (yeojohnson, yeojohnson_llf, yeojohnson_normmax, yeojohnson_normplot). Unlike the Box-Cox transformation, the Yeo-Johnson transformation can accept negative values.

Added a general method to sample random variates based on the density only, in the new function rvs_ratio_uniforms.

The Yule-Simon distribution (yulesimon) was added -- this is a new discrete probability distribution.

stats and mstats now have access to a new regression method, siegelslopes, a robust linear regression algorithm

scipy.stats.gaussian_kde now has the ability to deal with weighted samples, and should have a modest improvement in performance

Levy Stable Parameter Estimation, PDF, and CDF calculations are now supported for scipy.stats.levy_stable.

The Brunner-Munzel test is now available as brunnermunzel in stats and mstats

scipy.linalg improvements

scipy.linalg.lapack now exposes the LAPACK routines using the Rectangular Full Packed storage (RFP) for upper triangular, lower triangular, symmetric, or Hermitian matrices; the upper trapezoidal fat matrix RZ decomposition routines are now available as well.

Deprecated features

The functions hyp2f0, hyp1f2 and hyp3f0 in scipy.special have been deprecated.

Backwards incompatible changes

LAPACK version 3.4.0 or later is now required. Building with Apple Accelerate is no longer supported.

The function scipy.linalg.subspace_angles(A, B) now gives correct results for all angles. Before this, the function only returned correct values for those angles which were greater than pi/4.

Support for the Bento build system has been removed. Bento has not been maintained for several years, and did not have good Python 3 or wheel support, hence it was time to remove it.

The required signature of scipy.optimize.lingprog method=simplex callback function has changed. Before iteration begins, the simplex solver first converts the problem into a standard form that does not, in general, have the same variables or constraints as the problem defined by the user. Previously, the simplex solver would pass a user-specified callback function several separate arguments, such as the current solution vector xk, corresponding to this standard form problem. Unfortunately, the relationship between the standard form problem and the user-defined problem was not documented, limiting the utility of the information passed to the callback function.

In addition to numerous bug fix changes, the simplex solver now passes a user-specified callback function a single OptimizeResult object containing information that corresponds directly to the user-defined problem. In future releases, this OptimizeResult object may be expanded to include additional information, such as variables corresponding to the standard-form problem and information concerning the relationship between the standard-form and user-defined problems.

The implementation of scipy.sparse.random has changed, and this affects the numerical values returned for both sparse.random and sparse.rand for some matrix shapes and a given seed.

scipy.optimize.newton will no longer use Halley's method in cases where it negatively impacts convergence

Other changes

Authors

  • @endolith
  • @luzpaz
  • Hameer Abbasi +
  • akahard2dj +
  • Anton Akhmerov
  • Joseph Albert
  • alexthomas93 +
  • ashish +
  • atpage +
  • Blair Azzopardi +
  • Yoshiki Vázquez Baeza
  • Bence Bagi +
  • Christoph Baumgarten
  • Lucas Bellomo +
  • BH4 +
  • Aditya Bharti
  • Max Bolingbroke
  • François Boulogne
  • Ward Bradt +
  • Matthew Brett
  • Evgeni Burovski
  • Rafał Byczek +
  • Alfredo Canziani +
  • CJ Carey
  • Lucía Cheung +
  • Poom Chiarawongse +
  • Jeanne Choo +
  • Robert Cimrman
  • Graham Clenaghan +
  • cynthia-rempel +
  • Johannes Damp +
  • Jaime Fernandez del Rio
  • Dowon +
  • emmi474 +
  • Stefan Endres +
  • Thomas Etherington +
  • Piotr Figiel
  • Alex Fikl +
  • fo40225 +
  • Joseph Fox-Rabinovitz
  • Lars G
  • Abhinav Gautam +
  • Stiaan Gerber +
  • C.A.M. Gerlach +
  • Ralf Gommers
  • Todd Goodall
  • Lars Grueter +
  • Sylvain Gubian +
  • Matt Haberland
  • David Hagen
  • Will Handley +
  • Charles Harris
  • Ian Henriksen
  • Thomas Hisch +
  • Theodore Hu
  • Michael Hudson-Doyle +
  • Nicolas Hug +
  • jakirkham +
  • Jakob Jakobson +
  • James +
  • Jan Schlüter
  • jeanpauphilet +
  • josephmernst +
  • Kai +
  • Kai-Striega +
  • kalash04 +
  • Toshiki Kataoka +
  • Konrad0 +
  • Tom Krauss +
  • Johannes Kulick
  • Lars Grüter +
  • Eric Larson
  • Denis Laxalde
  • Will Lee +
  • Katrin Leinweber +
  • Yin Li +
  • P. L. Lim +
  • Jesse Livezey +
  • Duncan Macleod +
  • MatthewFlamm +
  • Nikolay Mayorov
  • Mike McClurg +
  • Christian Meyer +
  • Mark Mikofski
  • Naoto Mizuno +
  • mohmmadd +
  • Nathan Musoke
  • Anju Geetha Nair +
  • Andrew Nelson
  • Ayappan P +
  • Nick Papior
  • Haesun Park +
  • Ronny Pfannschmidt +
  • pijyoi +
  • Ilhan Polat
  • Anthony Polloreno +
  • Ted Pudlik
  • puenka
  • Eric Quintero
  • Pradeep Reddy Raamana +
  • Vyas Ramasubramani +
  • Ramon Viñas +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro
  • richardjgowers +
  • Rob +
  • robbystk +
  • Lucas Roberts +
  • rohan +
  • Joaquin Derrac Rus +
  • Josua Sassen +
  • Bruce Sharpe +
  • Max Shinn +
  • Scott Sievert
  • Sourav Singh
  • Strahinja Lukić +
  • Kai Striega +
  • Shinya SUZUKI +
  • Mike Toews +
  • Piotr Uchwat
  • Miguel de Val-Borro +
  • Nicky van Foreest
  • Paul van Mulbregt
  • Gael Varoquaux
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Joshua Wharton +
  • Bernhard M. Wiedemann +
  • Eric Wieser
  • Josh Wilson
  • Tony Xiang +
  • Roman Yurchak +
  • Roy Zywina +

A total of 137 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 7 years ago

scipy - SciPy 1.2.0rc1

SciPy 1.2.0 Release Notes

Note: Scipy 1.2.0 is not released yet!

SciPy 1.2.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.2.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

Note: This will be the last SciPy release to support Python 2.7. Consequently, the 1.2.x series will be a long term support (LTS) release; we will backport bug fixes until 1 Jan 2020.

For running on PyPy, PyPy3 6.0+ and NumPy 1.15.0 are required.

Highlights of this release

  • 1-D root finding improvements with a new solver, toms748, and a new unified interface, root_scalar
  • New dual_annealing optimization method that combines stochastic and local deterministic searching
  • A new optimization algorithm, shgo (simplicial homology global optimization) for derivative free optimization problems
  • A new category of quaternion-based transformations are available in scipy.spatial.transform

New features

scipy.ndimage improvements

Proper spline coefficient calculations have been added for the mirror, wrap, and reflect modes of scipy.ndimage.rotate

scipy.fftpack improvements

DCT-IV, DST-IV, DCT-I, and DST-I orthonormalization are now supported in scipy.fftpack.

scipy.interpolate improvements

scipy.interpolate.pade now accepts a new argument for the order of the numerator

scipy.cluster improvements

scipy.cluster.vq.kmeans2 gained a new initialization method, kmeans++.

scipy.special improvements

The function softmax was added to scipy.special.

scipy.optimize improvements

The one-dimensional nonlinear solvers have been given a unified interface scipy.optimize.root_scalar, similar to the scipy.optimize.root interface for multi-dimensional solvers. scipy.optimize.root_scalar(f, bracket=[a ,b], method="brenth") is equivalent to scipy.optimize.brenth(f, a ,b). If no method is specified, an appropriate one will be selected based upon the bracket and the number of derivatives available.

The so-called Algorithm 748 of Alefeld, Potra and Shi for root-finding within an enclosing interval has been added as scipy.optimize.toms748. This provides guaranteed convergence to a root with convergence rate per function evaluation of approximately 1.65 (for sufficiently well-behaved functions.)

differential_evolution now has the updating and workers keywords. The first chooses between continuous updating of the best solution vector (the default), or once per generation. Continuous updating can lead to faster convergence. The workers keyword accepts an int or map-like callable, and parallelises the solver (having the side effect of updating once per generation). Supplying an int evaluates the trial solutions in N parallel parts. Supplying a map-like callable allows other parallelisation approaches (such as mpi4py, or joblib) to be used.

dual_annealing (and shgo below) is a powerful new general purpose global optizimation (GO) algorithm. dual_annealing uses two annealing processes to accelerate the convergence towards the global minimum of an objective mathematical function. The first annealing process controls the stochastic Markov chain searching and the second annealing process controls the deterministic minimization. So, dual annealing is a hybrid method that takes advantage of stochastic and local deterministic searching in an efficient way.

shgo (simplicial homology global optimization) is a similar algorithm appropriate for solving black box and derivative free optimization (DFO) problems. The algorithm generally converges to the global solution in finite time. The convergence holds for non-linear inequality and equality constraints. In addition to returning a global minimum, the algorithm also returns any other global and local minima found after every iteration. This makes it useful for exploring the solutions in a domain.

scipy.optimize.newton can now accept a scalar or an array

MINPACK usage is now thread-safe, such that MINPACK + callbacks may be used on multiple threads.

scipy.signal improvements

Digital filter design functions now include a parameter to specify the sampling rate. Previously, digital filters could only be specified using normalized frequency, but different functions used different scales (e.g. 0 to 1 for butter vs 0 to π for freqz), leading to errors and confusion. With the fs parameter, ordinary frequencies can now be entered directly into functions, with the normalization handled internally.

find_peaks and related functions no longer raise an exception if the properties of a peak have unexpected values (e.g. a prominence of 0). A PeakPropertyWarning is given instead.

The new keyword argument plateau_size was added to find_peaks. plateau_size may be used to select peaks based on the length of the flat top of a peak.

welch() and csd() methods in scipy.signal now support calculation of a median average PSD, using average='mean' keyword

scipy.sparse improvements

The scipy.sparse.bsr_matrix.tocsr method is now implemented directly instead of converting via COO format, and the scipy.sparse.bsr_matrix.tocsc method is now also routed via CSR conversion instead of COO. The efficiency of both conversions is now improved.

The issue where SuperLU or UMFPACK solvers crashed on matrices with non-canonical format in scipy.sparse.linalg was fixed. The solver wrapper canonicalizes the matrix if necessary before calling the SuperLU or UMFPACK solver.

The largest option of scipy.sparse.linalg.lobpcg() was fixed to have a correct (and expected) behavior. The order of the eigenvalues was made consistent with the ARPACK solver (eigs()), i.e. ascending for the smallest eigenvalues, and descending for the largest eigenvalues.

The scipy.sparse.random function is now faster and also supports integer and complex values by passing the appropriate value to the dtype argument.

scipy.spatial improvements

The function scipy.spatial.distance.jaccard was modified to return 0 instead of np.nan when two all-zero vectors are compared.

Support for the Jensen Shannon distance, the square-root of the divergence, has been added under scipy.spatial.distance.jensenshannon

An optional keyword was added to the function scipy.spatial.cKDTree.query_ball_point() to sort or not sort the returned indices. Not sorting the indices can speed up calls.

A new category of quaternion-based transformations are available in scipy.spatial.transform, including spherical linear interpolation of rotations (Slerp), conversions to and from quaternions, Euler angles, and general rotation and inversion capabilities (spatial.transform.Rotation), and uniform random sampling of 3D rotations (spatial.transform.Rotation.random).

scipy.stats improvements

The Yeo-Johnson power transformation is now supported (yeojohnson, yeojohnson_llf, yeojohnson_normmax, yeojohnson_normplot). Unlike the Box-Cox transformation, the Yeo-Johnson transformation can accept negative values.

Added a general method to sample random variates based on the density only, in the new function rvs_ratio_uniforms.

The Yule-Simon distribution (yulesimon) was added -- this is a new discrete probability distribution.

stats and mstats now have access to a new regression method, siegelslopes, a robust linear regression algorithm

scipy.stats.gaussian_kde now has the ability to deal with weighted samples, and should have a modest improvement in performance

Levy Stable Parameter Estimation, PDF, and CDF calculations are now supported for scipy.stats.levy_stable.

The Brunner-Munzel test is now available as brunnermunzel in stats and mstats

scipy.linalg improvements

scipy.linalg.lapack now exposes the LAPACK routines using the Rectangular Full Packed storage (RFP) for upper triangular, lower triangular, symmetric, or Hermitian matrices; the upper trapezoidal fat matrix RZ decomposition routines are now available as well.

Deprecated features

The functions hyp2f0, hyp1f2 and hyp3f0 in scipy.special have been deprecated.

Backwards incompatible changes

LAPACK version 3.4.0 or later is now required. Building with Apple Accelerate is no longer supported.

The function scipy.linalg.subspace_angles(A, B) now gives correct results for all angles. Before this, the function only returned correct values for those angles which were greater than pi/4.

Support for the Bento build system has been removed. Bento has not been maintained for several years, and did not have good Python 3 or wheel support, hence it was time to remove it.

The required signature of scipy.optimize.lingprog method=simplex callback function has changed. Before iteration begins, the simplex solver first converts the problem into a standard form that does not, in general, have the same variables or constraints as the problem defined by the user. Previously, the simplex solver would pass a user-specified callback function several separate arguments, such as the current solution vector xk, corresponding to this standard form problem. Unfortunately, the relationship between the standard form problem and the user-defined problem was not documented, limiting the utility of the information passed to the callback function.

In addition to numerous bug fix changes, the simplex solver now passes a user-specified callback function a single OptimizeResult object containing information that corresponds directly to the user-defined problem. In future releases, this OptimizeResult object may be expanded to include additional information, such as variables corresponding to the standard-form problem and information concerning the relationship between the standard-form and user-defined problems.

The implementation of scipy.sparse.random has changed, and this affects the numerical values returned for both sparse.random and sparse.rand for some matrix shapes and a given seed.

scipy.optimize.newton will no longer use Halley's method in cases where it negatively impacts convergence

Other changes

Authors

  • @endolith
  • @luzpaz
  • Hameer Abbasi +
  • akahard2dj +
  • Anton Akhmerov
  • Joseph Albert
  • alexthomas93 +
  • ashish +
  • atpage +
  • Blair Azzopardi +
  • Yoshiki Vázquez Baeza
  • Bence Bagi +
  • Christoph Baumgarten
  • Lucas Bellomo +
  • BH4 +
  • Aditya Bharti
  • Max Bolingbroke
  • François Boulogne
  • Ward Bradt +
  • Matthew Brett
  • Evgeni Burovski
  • Rafał Byczek +
  • Alfredo Canziani +
  • CJ Carey
  • Lucía Cheung +
  • Poom Chiarawongse +
  • Jeanne Choo +
  • Robert Cimrman
  • Graham Clenaghan +
  • cynthia-rempel +
  • Johannes Damp +
  • Jaime Fernandez del Rio
  • Dowon +
  • emmi474 +
  • Stefan Endres +
  • Thomas Etherington +
  • Alex Fikl +
  • fo40225 +
  • Joseph Fox-Rabinovitz
  • Lars G
  • Abhinav Gautam +
  • Stiaan Gerber +
  • C.A.M. Gerlach +
  • Ralf Gommers
  • Todd Goodall
  • Lars Grueter +
  • Sylvain Gubian +
  • Matt Haberland
  • David Hagen
  • Will Handley +
  • Charles Harris
  • Ian Henriksen
  • Thomas Hisch +
  • Theodore Hu
  • Michael Hudson-Doyle +
  • Nicolas Hug +
  • jakirkham +
  • Jakob Jakobson +
  • James +
  • Jan Schlüter
  • jeanpauphilet +
  • josephmernst +
  • Kai +
  • Kai-Striega +
  • kalash04 +
  • Toshiki Kataoka +
  • Konrad0 +
  • Tom Krauss +
  • Johannes Kulick
  • Lars Grüter +
  • Eric Larson
  • Denis Laxalde
  • Will Lee +
  • Katrin Leinweber +
  • Yin Li +
  • P. L. Lim +
  • Jesse Livezey +
  • Duncan Macleod +
  • MatthewFlamm +
  • Nikolay Mayorov
  • Mike McClurg +
  • Christian Meyer +
  • Mark Mikofski
  • Naoto Mizuno +
  • mohmmadd +
  • Nathan Musoke
  • Anju Geetha Nair +
  • Andrew Nelson
  • Ayappan P +
  • Nick Papior
  • Haesun Park +
  • Ronny Pfannschmidt +
  • pijyoi +
  • Ilhan Polat
  • Anthony Polloreno +
  • Ted Pudlik
  • puenka
  • Eric Quintero
  • Pradeep Reddy Raamana +
  • Vyas Ramasubramani +
  • Ramon Viñas +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro
  • richardjgowers +
  • Rob +
  • robbystk +
  • Lucas Roberts +
  • rohan +
  • Joaquin Derrac Rus +
  • Josua Sassen +
  • Bruce Sharpe +
  • Max Shinn +
  • Scott Sievert
  • Sourav Singh
  • Strahinja Lukić +
  • Kai Striega +
  • Shinya SUZUKI +
  • Mike Toews +
  • Piotr Uchwat
  • Miguel de Val-Borro +
  • Nicky van Foreest
  • Paul van Mulbregt
  • Gael Varoquaux
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Joshua Wharton +
  • Bernhard M. Wiedemann +
  • Eric Wieser
  • Josh Wilson
  • Tony Xiang +
  • Roman Yurchak +
  • Roy Zywina +

A total of 137 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by tylerjereddy over 7 years ago

scipy - SciPy 1.1.0

SciPy 1.1.0 is the culmination of 7 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.1.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This release has improved but not necessarily 100% compatibility with the PyPy Python implementation. For running on PyPy, PyPy 6.0+ and Numpy 1.15.0+ are required.

New features

scipy.integrate improvements

The argument tfirst has been added to the function scipy.integrate.odeint. This allows odeint to use the same user functions as scipy.integrate.solve_ivp and scipy.integrate.ode without the need for wrapping them in a function that swaps the first two arguments.

Error messages from quad() are now clearer.

scipy.linalg improvements

The function scipy.linalg.ldl has been added for factorization of indefinite symmetric/hermitian matrices into triangular and block diagonal matrices.

Python wrappers for LAPACK sygst, hegst added in scipy.linalg.lapack.

Added scipy.linalg.null_space, scipy.linalg.cdf2rdf, scipy.linalg.rsf2csf.

scipy.misc improvements

An electrocardiogram has been added as an example dataset for a one-dimensional signal. It can be accessed through scipy.misc.electrocardiogram.

scipy.ndimage improvements

The routines scipy.ndimage.binary_opening, and scipy.ndimage.binary_closing now support masks and different border values.

scipy.optimize improvements

The method trust-constr has been added to scipy.optimize.minimize. The method switches between two implementations depending on the problem definition. For equality constrained problems it is an implementation of a trust-region sequential quadratic programming solver and, when inequality constraints are imposed, it switches to a trust-region interior point method. Both methods are appropriate for large scale problems. Quasi-Newton options BFGS and SR1 were implemented and can be used to approximate second order derivatives for this new method. Also, finite-differences can be used to approximate either first-order or second-order derivatives.

Random-to-Best/1/bin and Random-to-Best/1/exp mutation strategies were added to scipy.optimize.differential_evolution as randtobest1bin and randtobest1exp, respectively. Note: These names were already in use but implemented a different mutation strategy. See Backwards incompatible changes, below. The init keyword for the scipy.optimize.differential_evolution function can now accept an array. This array allows the user to specify the entire population.

Add an adaptive option to Nelder-Mead to use step parameters adapted to the dimensionality of the problem.

Minor improvements in scipy.optimize.basinhopping.

scipy.signal improvements

Three new functions for peak finding in one-dimensional arrays were added. scipy.signal.find_peaks searches for peaks (local maxima) based on simple value comparison of neighbouring samples and returns those peaks whose properties match optionally specified conditions for their height, prominence, width, threshold and distance to each other. scipy.signal.peak_prominences and scipy.signal.peak_widths can directly calculate the prominences or widths of known peaks.

Added ZPK versions of frequency transformations: scipy.signal.bilinear_zpk, scipy.signal.lp2bp_zpk, scipy.signal.lp2bs_zpk, scipy.signal.lp2hp_zpk, scipy.signal.lp2lp_zpk.

Added scipy.signal.windows.dpss, scipy.signal.windows.general_cosine and scipy.signal.windows.general_hamming.

scipy.sparse improvements

Previously, the reshape method only worked on scipy.sparse.lil_matrix, and in-place reshaping did not work on any matrices. Both operations are now implemented for all matrices. Handling of shapes has been made consistent with numpy.matrix throughout the scipy.sparse module (shape can be a tuple or splatted, negative number acts as placeholder, padding and unpadding dimensions of size 1 to ensure length-2 shape).

scipy.special improvements

Added Owen's T function as scipy.special.owens_t.

Accuracy improvements in chndtr, digamma, gammaincinv, lambertw, zetac.

scipy.stats improvements

The Moyal distribution has been added as scipy.stats.moyal.

Added the normal inverse Gaussian distribution as scipy.stats.norminvgauss.

Deprecated features

The iterative linear equation solvers in scipy.sparse.linalg had a sub-optimal way of how absolute tolerance is considered. The default behavior will be changed in a future Scipy release to a more standard and less surprising one. To silence deprecation warnings, set the atol= parameter explicitly.

scipy.signal.windows.slepian is deprecated, replaced by scipy.signal.windows.dpss.

The window functions in scipy.signal are now available in scipy.signal.windows. They will remain also available in the old location in the scipy.signal namespace in future Scipy versions. However, importing them from scipy.signal.windows is preferred, and new window functions will be added only there.

Indexing sparse matrices with floating-point numbers instead of integers is deprecated.

The function scipy.stats.itemfreq is deprecated.

Backwards incompatible changes

Previously, scipy.linalg.orth used a singular value cutoff value appropriate for double precision numbers also for single-precision input. The cutoff value is now tunable, and the default has been changed to depend on the input data precision.

In previous versions of Scipy, the randtobest1bin and randtobest1exp mutation strategies in scipy.optimize.differential_evolution were actually implemented using the Current-to-Best/1/bin and Current-to-Best/1/exp strategies, respectively. These strategies were renamed to currenttobest1bin and currenttobest1exp and the implementations of randtobest1bin and randtobest1exp strategies were corrected.

Functions in the ndimage module now always return their output array. Before this most functions only returned the output array if it had been allocated by the function, and would return None if it had been provided by the user.

Distance metrics in scipy.spatial.distance now require non-negative weights.

scipy.special.loggamma returns now real-valued result when the input is real-valued.

Other changes

When building on Linux with GNU compilers, the .so Python extension files now hide all symbols except those required by Python, which can avoid problems when embedding the Python interpreter.

Authors

  • Saurabh Agarwal +
  • Diogo Aguiam +
  • Joseph Albert +
  • Gerrit Ansmann +
  • Jean-François B +
  • Vahan Babayan +
  • Alessandro Pietro Bardelli
  • Christoph Baumgarten +
  • Felix Berkenkamp
  • Lilian Besson +
  • Aditya Bharti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Martin Ø. Christensen +
  • Robert Cimrman
  • Vicky Close +
  • Peter Cock +
  • Philip DeBoer
  • Jaime Fernandez del Rio
  • Dieter Werthmüller +
  • Tom Donoghue +
  • Matt Dzugan +
  • Lars G +
  • Jacques Gaudin +
  • Andriy Gelman +
  • Sean Gillies +
  • Dezmond Goff
  • Christoph Gohlke
  • Ralf Gommers
  • Uri Goren +
  • Deepak Kumar Gouda +
  • Douglas Lessa Graciosa +
  • Matt Haberland
  • David Hagen
  • Charles Harris
  • Jordan Heemskerk +
  • Danny Hermes +
  • Stephan Hoyer +
  • Theodore Hu +
  • Jean-François B. +
  • Mads Jensen +
  • Jon Haitz Legarreta Gorroño +
  • Ben Jude +
  • Noel Kippers +
  • Julius Bier Kirkegaard +
  • Maria Knorps +
  • Mikkel Kristensen +
  • Eric Larson
  • Kasper Primdal Lauritzen +
  • Denis Laxalde
  • KangWon Lee +
  • Jan Lehky +
  • Jackie Leng +
  • P.L. Lim +
  • Nikolay Mayorov
  • Mihai Capotă +
  • Max Mikhaylov +
  • Mark Mikofski +
  • Jarrod Millman
  • Raden Muhammad +
  • Paul Nation
  • Andrew Nelson
  • Nico Schlömer
  • Joel Nothman
  • Kyle Oman +
  • Egor Panfilov +
  • Nick Papior
  • Anubhav Patel +
  • Oleksandr Pavlyk
  • Ilhan Polat
  • Robert Pollak +
  • Anant Prakash +
  • Aman Pratik
  • Sean Quinn +
  • Giftlin Rajaiah +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro +
  • Antonio Horta Ribeiro
  • Benjamin Rose +
  • Fabian Rost
  • Divakar Roy +
  • Scott Sievert
  • Leo Singer
  • Sourav Singh
  • Martino Sorbaro +
  • Eric Stansifer +
  • Martin Thoma
  • Phil Tooley +
  • Piotr Uchwat +
  • Paul van Mulbregt
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Florian Weimer +
  • Eric Wieser
  • Josh Wilson
  • Ted Ying +
  • Evgeny Zhurko
  • Zé Vinícius
  • @Astrofysicus +
  • @awakenting +
  • @endolith
  • @FormerPhysicist +
  • @gaulinmp +
  • @hugovk
  • @ksemb +
  • @kshitij12345 +
  • @luzpaz +
  • @NKrvavica +
  • @rafalalgo +
  • @samyak0210 +
  • @soluwalana +
  • @sudheerachary +
  • @Tokixix +
  • @tttthomasssss +
  • @vkk800 +
  • @xoviat
  • @ziejcow +

A total of 122 people contributed to this release. People with a \"+\" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by pv about 8 years ago

scipy - Scipy 1.1.0rc1

SciPy 1.1.0 Release Notes

Note: Scipy 1.1.0 is not released yet!

SciPy 1.1.0 is the culmination of 7 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.1.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This release has improved but not necessarily 100% compatibility with the PyPy Python implementation. For running on PyPy, PyPy 6.0+ and Numpy 1.15.0+ are required.

New features

scipy.integrate improvements

The argument tfirst has been added to the function scipy.integrate.odeint. This allows odeint to use the same user functions as scipy.integrate.solve_ivp and scipy.integrate.ode without the need for wrapping them in a function that swaps the first two arguments.

Error messages from quad() are now clearer.

scipy.linalg improvements

The function scipy.linalg.ldl has been added for factorization of indefinite symmetric/hermitian matrices into triangular and block diagonal matrices.

Python wrappers for LAPACK sygst, hegst added in scipy.linalg.lapack.

Added scipy.linalg.null_space, scipy.linalg.cdf2rdf, scipy.linalg.rsf2csf.

scipy.misc improvements

An electrocardiogram has been added as an example dataset for a one-dimensional signal. It can be accessed through scipy.misc.electrocardiogram.

scipy.ndimage improvements

The routines scipy.ndimage.binary_opening, and scipy.ndimage.binary_closing now support masks and different border values.

scipy.optimize improvements

The method trust-constr has been added to scipy.optimize.minimize. The method switches between two implementations depending on the problem definition. For equality constrained problems it is an implementation of a trust-region sequential quadratic programming solver and, when inequality constraints are imposed, it switches to a trust-region interior point method. Both methods are appropriate for large scale problems. Quasi-Newton options BFGS and SR1 were implemented and can be used to approximate second order derivatives for this new method. Also, finite-differences can be used to approximate either first-order or second-order derivatives.

Random-to-Best/1/bin and Random-to-Best/1/exp mutation strategies were added to scipy.optimize.differential_evolution as randtobest1bin and randtobest1exp, respectively. Note: These names were already in use but implemented a different mutation strategy. See Backwards incompatible changes, below. The init keyword for the scipy.optimize.differential_evolution function can now accept an array. This array allows the user to specify the entire population.

Add an adaptive option to Nelder-Mead to use step parameters adapted to the dimensionality of the problem.

Minor improvements in scipy.optimize.basinhopping.

scipy.signal improvements

Three new functions for peak finding in one-dimensional arrays were added. scipy.signal.find_peaks searches for peaks (local maxima) based on simple value comparison of neighbouring samples and returns those peaks whose properties match optionally specified conditions for their height, prominence, width, threshold and distance to each other. scipy.signal.peak_prominences and scipy.signal.peak_widths can directly calculate the prominences or widths of known peaks.

Added ZPK versions of frequency transformations: scipy.signal.bilinear_zpk, scipy.signal.lp2bp_zpk, scipy.signal.lp2bs_zpk, scipy.signal.lp2hp_zpk, scipy.signal.lp2lp_zpk.

Added scipy.signal.windows.dpss, scipy.signal.windows.general_cosine and scipy.signal.windows.general_hamming.

scipy.sparse improvements

An in-place resize method has been added to all sparse matrix formats, which was only available for scipy.sparse.dok_matrix in previous releases.

scipy.special improvements

Added Owen's T function as scipy.special.owens_t.

Accuracy improvements in chndtr, digamma, gammaincinv, lambertw, zetac.

scipy.stats improvements

The Moyal distribution has been added as scipy.stats.moyal.

Added the normal inverse Gaussian distribution as scipy.stats.norminvgauss.

Deprecated features

The iterative linear equation solvers in scipy.sparse.linalg had a sub-optimal way of how absolute tolerance is considered. The default behavior will be changed in a future Scipy release to a more standard and less surprising one. To silence deprecation warnings, set the atol= parameter explicitly.

scipy.signal.windows.slepian is deprecated, replaced by scipy.signal.windows.dpss.

The window functions in scipy.signal are now available in scipy.signal.windows. They will remain also available in the old location in the scipy.signal namespace in future Scipy versions. However, importing them from scipy.signal.windows is preferred, and new window functions will be added only there.

Indexing sparse matrices with floating-point numbers instead of integers is deprecated.

The function scipy.stats.itemfreq is deprecated.

Backwards incompatible changes

Previously, scipy.linalg.orth used a singular value cutoff value appropriate for double precision numbers also for single-precision input. The cutoff value is now tunable, and the default has been changed to depend on the input data precision.

In previous versions of Scipy, the randtobest1bin and randtobest1exp mutation strategies in scipy.optimize.differential_evolution were actually implemented using the Current-to-Best/1/bin and Current-to-Best/1/exp strategies, respectively. These strategies were renamed to currenttobest1bin and currenttobest1exp and the implementations of randtobest1bin and randtobest1exp strategies were corrected.

Functions in the ndimage module now always return their output array. Before this most functions only returned the output array if it had been allocated by the function, and would return None if it had been provided by the user.

Distance metrics in scipy.spatial.distance now require non-negative weights.

scipy.special.loggamma returns now real-valued result when the input is real-valued.

Other changes

When building on Linux with GNU compilers, the .so Python extension files now hide all symbols except those required by Python, which can avoid problems when embedding the Python interpreter.

Authors

  • Saurabh Agarwal +
  • Diogo Aguiam +
  • Joseph Albert +
  • Gerrit Ansmann +
  • Astrofysicus +
  • Jean-François B +
  • Vahan Babayan +
  • Alessandro Pietro Bardelli
  • Christoph Baumgarten +
  • Felix Berkenkamp
  • Lilian Besson +
  • Aditya Bharti +
  • Matthew Brett
  • Evgeni Burovski
  • CJ Carey
  • Martin Ø. Christensen +
  • Robert Cimrman
  • Vicky Close +
  • Peter Cock +
  • Philip DeBoer
  • Jaime Fernandez del Rio
  • Dieter Werthmüller +
  • Tom Donoghue +
  • Matt Dzugan +
  • Lars G +
  • Jacques Gaudin +
  • Andriy Gelman +
  • Sean Gillies +
  • Dezmond Goff
  • Christoph Gohlke
  • Ralf Gommers
  • Uri Goren +
  • Deepak Kumar Gouda +
  • Douglas Lessa Graciosa +
  • Matt Haberland
  • David Hagen
  • Charles Harris
  • Jordan Heemskerk +
  • Danny Hermes +
  • Stephan Hoyer +
  • Theodore Hu +
  • Jean-François B. +
  • Mads Jensen +
  • Jon Haitz Legarreta Gorroño +
  • Ben Jude +
  • Noel Kippers +
  • Julius Bier Kirkegaard +
  • Maria Knorps +
  • Mikkel Kristensen +
  • Eric Larson
  • Kasper Primdal Lauritzen +
  • Denis Laxalde
  • KangWon Lee +
  • Jan Lehky +
  • Jackie Leng +
  • P.L. Lim +
  • Nikolay Mayorov
  • Mihai Capotă +
  • Max Mikhaylov +
  • Mark Mikofski +
  • Jarrod Millman
  • Raden Muhammad +
  • Paul Nation
  • Andrew Nelson
  • Nico Schlömer
  • Joel Nothman
  • Kyle Oman +
  • Egor Panfilov +
  • Nick Papior
  • Anubhav Patel +
  • Oleksandr Pavlyk
  • Ilhan Polat
  • Robert Pollak +
  • Anant Prakash +
  • Aman Pratik
  • Sean Quinn +
  • Giftlin Rajaiah +
  • Tyler Reddy
  • Joscha Reimer
  • Antonio H Ribeiro +
  • Antonio Horta Ribeiro
  • Benjamin Rose +
  • Fabian Rost
  • Divakar Roy +
  • Scott Sievert
  • Leo Singer
  • Sourav Singh
  • Martino Sorbaro +
  • Eric Stansifer +
  • Martin Thoma
  • Phil Tooley +
  • Piotr Uchwat +
  • Paul van Mulbregt
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Florian Weimer +
  • Eric Wieser
  • Josh Wilson
  • Ted Ying +
  • Evgeny Zhurko
  • Zé Vinícius
  • @awakenting +
  • @endolith
  • @FormerPhysicist +
  • @gaulinmp +
  • @hugovk
  • @ksemb +
  • @kshitij12345 +
  • @luzpaz +
  • @NKrvavica +
  • @rafalalgo +
  • @samyak0210 +
  • @soluwalana +
  • @sudheerachary +
  • @Tokixix +
  • @tttthomasssss +
  • @vkk800 +
  • @xoviat
  • @ziejcow +

A total of 122 people contributed to this release. People with a \"+\" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by pv about 8 years ago

scipy - SciPy 1.0.1

SciPy 1.0.1 is a bug-fix release with no new features compared to 1.0.0. Probably the most important change is a fix for an incompatibility between SciPy 1.0.0 and numpy.f2py in the NumPy master branch.

- Python
Published by rgommers about 8 years ago

scipy - SciPy 1.0.0

We are extremely pleased to announce the release of SciPy 1.0, 16 years after version 0.1 saw the light of day. It has been a long, productive journey to get here, and we anticipate many more exciting new features and releases in the future.

Why 1.0 now?

A version number should reflect the maturity of a project - and SciPy was a mature and stable library that is heavily used in production settings for a long time already. From that perspective, the 1.0 version number is long overdue.

Some key project goals, both technical (e.g. Windows wheels and continuous integration) and organisational (a governance structure, code of conduct and a roadmap), have been achieved recently.

Many of us are a bit perfectionist, and therefore are reluctant to call something "1.0" because it may imply that it's "finished" or "we are 100% happy with it". This is normal for many open source projects, however that doesn't make it right. We acknowledge to ourselves that it's not perfect, and there are some dusty corners left (that will probably always be the case). Despite that, SciPy is extremely useful to its users, on average has high quality code and documentation, and gives the stability and backwards compatibility guarantees that a 1.0 label imply.

Some history and perspectives

  • 2001: the first SciPy release
  • 2005: transition to NumPy
  • 2007: creation of scikits
  • 2008: scipy.spatial module and first Cython code added
  • 2010: moving to a 6-monthly release cycle
  • 2011: SciPy development moves to GitHub
  • 2011: Python 3 support
  • 2012: adding a sparse graph module and unified optimization interface
  • 2012: removal of scipy.maxentropy
  • 2013: continuous integration with TravisCI
  • 2015: adding Cython interface for BLAS/LAPACK and a benchmark suite
  • 2017: adding a unified C API with scipy.LowLevelCallable; removal of scipy.weave
  • 2017: SciPy 1.0 release

Pauli Virtanen is SciPy's Benevolent Dictator For Life (BDFL). He says:

Truthfully speaking, we could have released a SciPy 1.0 a long time ago, so I'm happy we do it now at long last. The project has a long history, and during the years it has matured also as a software project. I believe it has well proved its merit to warrant a version number starting with unity.

Since its conception 15+ years ago, SciPy has largely been written by and for scientists, to provide a box of basic tools that they need. Over time, the set of people active in its development has undergone some rotation, and we have evolved towards a somewhat more systematic approach to development. Regardless, this underlying drive has stayed the same, and I think it will also continue propelling the project forward in future. This is all good, since not long after 1.0 comes 1.1.

Travis Oliphant is one of SciPy's creators. He says:

I'm honored to write a note of congratulations to the SciPy developers and the entire SciPy community for the release of SciPy 1.0. This release represents a dream of many that has been patiently pursued by a stalwart group of pioneers for nearly 2 decades. Efforts have been broad and consistent over that time from many hundreds of people. From initial discussions to efforts coding and packaging to documentation efforts to extensive conference and community building, the SciPy effort has been a global phenomenon that it has been a privilege to participate in.

The idea of SciPy was already in multiple people’s minds in 1997 when I first joined the Python community as a young graduate student who had just fallen in love with the expressibility and extensibility of Python. The internet was just starting to bringing together like-minded mathematicians and scientists in nascent electronically-connected communities. In 1998, there was a concerted discussion on the matrix-SIG, python mailing list with people like Paul Barrett, Joe Harrington, Perry Greenfield, Paul Dubois, Konrad Hinsen, David Ascher, and others. This discussion encouraged me in 1998 and 1999 to procrastinate my PhD and spend a lot of time writing extension modules to Python that mostly wrapped battle-tested Fortran and C-code making it available to the Python user. This work attracted the help of others like Robert Kern, Pearu Peterson and Eric Jones who joined their efforts with mine in 2000 so that by 2001, the first SciPy release was ready. This was long before Github simplified collaboration and input from others and the "patch" command and email was how you helped a project improve.

Since that time, hundreds of people have spent an enormous amount of time improving the SciPy library and the community surrounding this library has dramatically grown. I stopped being able to participate actively in developing the SciPy library around 2010. Fortunately, at that time, Pauli Virtanen and Ralf Gommers picked up the pace of development supported by dozens of other key contributors such as David Cournapeau, Evgeni Burovski, Josef Perktold, and Warren Weckesser. While I have only been able to admire the development of SciPy from a distance for the past 7 years, I have never lost my love of the project and the concept of community-driven development. I remain driven even now by a desire to help sustain the development of not only the SciPy library but many other affiliated and related open-source projects. I am extremely pleased that SciPy is in the hands of a world-wide community of talented developers who will ensure that SciPy remains an example of how grass-roots, community-driven development can succeed.

Fernando Perez offers a wider community perspective:

The existence of a nascent Scipy library, and the incredible --if tiny by today's standards-- community surrounding it is what drew me into the scientific Python world while still a physics graduate student in 2001. Today, I am awed when I see these tools power everything from high school education to the research that led to the 2017 Nobel Prize in physics.

Don't be fooled by the 1.0 number: this project is a mature cornerstone of the modern scientific computing ecosystem. I am grateful for the many who have made it possible, and hope to be able to contribute again to it in the future. My sincere congratulations to the whole team!

Highlights of this release

Some of the highlights of this release are:

  • Major build improvements. Windows wheels are available on PyPI for the first time, and continuous integration has been set up on Windows and OS X in addition to Linux.
  • A set of new ODE solvers and a unified interface to them (scipy.integrate.solve_ivp).
  • Two new trust region optimizers and a new linear programming method, with improved performance compared to what scipy.optimize offered previously.
  • Many new BLAS and LAPACK functions were wrapped. The BLAS wrappers are now complete.

Upgrading and compatibility

There have been a number of deprecations and API changes in this release, which are documented below. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s).

This release requires Python 2.7 or >=3.4 and NumPy 1.8.2 or greater.

This is also the last release to support LAPACK 3.1.x - 3.3.x. Moving the lowest supported LAPACK version to >3.2.x was long blocked by Apple Accelerate providing the LAPACK 3.2.1 API. We have decided that it's time to either drop Accelerate or, if there is enough interest, provide shims for functions added in more recent LAPACK versions so it can still be used.

New features

scipy.cluster improvements

scipy.cluster.hierarchy.optimal_leaf_ordering, a function to reorder a linkage matrix to minimize distances between adjacent leaves, was added.

scipy.fftpack improvements

N-dimensional versions of the discrete sine and cosine transforms and their inverses were added as dctn, idctn, dstn and idstn.

scipy.integrate improvements

A set of new ODE solvers have been added to scipy.integrate. The convenience function scipy.integrate.solve_ivp allows uniform access to all solvers. The individual solvers (RK23, RK45, Radau, BDF and LSODA) can also be used directly.

scipy.linalg improvements

The BLAS wrappers in scipy.linalg.blas have been completed. Added functions are *gbmv, *hbmv, *hpmv, *hpr, *hpr2, *spmv, *spr, *tbmv, *tbsv, *tpmv, *tpsv, *trsm, *trsv, *sbmv, *spr2,

Wrappers for the LAPACK functions *gels, *stev, *sytrd, *hetrd, *sytf2, *hetrf, *sytrf, *sycon, *hecon, *gglse, *stebz, *stemr, *sterf, and *stein have been added.

The function scipy.linalg.subspace_angles has been added to compute the subspace angles between two matrices.

The function scipy.linalg.clarkson_woodruff_transform has been added. It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.

The functions scipy.linalg.eigh_tridiagonal and scipy.linalg.eigvalsh_tridiagonal, which find the eigenvalues and eigenvectors of tridiagonal hermitian/symmetric matrices, were added.

scipy.ndimage improvements

Support for homogeneous coordinate transforms has been added to scipy.ndimage.affine_transform.

The ndimage C code underwent a significant refactoring, and is now a lot easier to understand and maintain.

scipy.optimize improvements

The methods trust-region-exact and trust-krylov have been added to the function scipy.optimize.minimize. These new trust-region methods solve the subproblem with higher accuracy at the cost of more Hessian factorizations (compared to dogleg) or more matrix vector products (compared to ncg) but usually require less nonlinear iterations and are able to deal with indefinite Hessians. They seem very competitive against the other Newton methods implemented in scipy.

scipy.optimize.linprog gained an interior point method. Its performance is superior (both in accuracy and speed) to the older simplex method.

scipy.signal improvements

An argument fs (sampling frequency) was added to the following functions: firwin, firwin2, firls, and remez. This makes these functions consistent with many other functions in scipy.signal in which the sampling frequency can be specified.

scipy.signal.freqz has been sped up significantly for FIR filters.

scipy.sparse improvements

Iterating over and slicing of CSC and CSR matrices is now faster by up to ~35%.

The tocsr method of COO matrices is now several times faster.

The diagonal method of sparse matrices now takes a parameter, indicating which diagonal to return.

scipy.sparse.linalg improvements

A new iterative solver for large-scale nonsymmetric sparse linear systems, scipy.sparse.linalg.gcrotmk, was added. It implements GCROT(m,k), a flexible variant of GCROT.

scipy.sparse.linalg.lsmr now accepts an initial guess, yielding potentially faster convergence.

SuperLU was updated to version 5.2.1.

scipy.spatial improvements

Many distance metrics in scipy.spatial.distance gained support for weights.

The signatures of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist were changed to *args, **kwargs in order to support a wider range of metrics (e.g. string-based metrics that need extra keywords). Also, an optional out parameter was added to pdist and cdist allowing the user to specify where the resulting distance matrix is to be stored

scipy.stats improvements

The methods cdf and logcdf were added to scipy.stats.multivariate_normal, providing the cumulative distribution function of the multivariate normal distribution.

New statistical distance functions were added, namely scipy.stats.wasserstein_distance for the first Wasserstein distance and scipy.stats.energy_distance for the energy distance.

Deprecated features

The following functions in scipy.misc are deprecated: bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow and toimage. Most of those functions have unexpected behavior (like rescaling and type casting image data without the user asking for that). Other functions simply have better alternatives.

scipy.interpolate.interpolate_wrapper and all functions in that submodule are deprecated. This was a never finished set of wrapper functions which is not relevant anymore.

The fillvalue of scipy.signal.convolve2d will be cast directly to the dtypes of the input arrays in the future and checked that it is a scalar or an array with a single element.

scipy.spatial.distance.matching is deprecated. It is an alias of scipy.spatial.distance.hamming, which should be used instead.

Implementation of scipy.spatial.distance.wminkowski was based on a wrong interpretation of the metric definition. In scipy 1.0 it has been just deprecated in the documentation to keep retro-compatibility but is recommended to use the new version of scipy.spatial.distance.minkowski that implements the correct behaviour.

Positional arguments of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist should be replaced with their keyword version.

Backwards incompatible changes

The following deprecated functions have been removed from scipy.stats: betai, chisqprob, f_value, histogram, histogram2, pdf_fromgamma, signaltonoise, square_of_sums, ss and threshold.

The following deprecated functions have been removed from scipy.stats.mstats: betai, f_value_wilks_lambda, signaltonoise and threshold.

The deprecated a and reta keywords have been removed from scipy.stats.shapiro.

The deprecated functions sparse.csgraph.cs_graph_components and sparse.linalg.symeig have been removed from scipy.sparse.

The following deprecated keywords have been removed in scipy.sparse.linalg: drop_tol from splu, and xtype from bicg, bicgstab, cg, cgs, gmres, qmr and minres.

The deprecated functions expm2 and expm3 have been removed from scipy.linalg. The deprecated keyword q was removed from scipy.linalg.expm. And the deprecated submodule linalg.calc_lwork was removed.

The deprecated functions C2K, K2C, F2C, C2F, F2K and K2F have been removed from scipy.constants.

The deprecated ppform class was removed from scipy.interpolate.

The deprecated keyword iprint was removed from scipy.optimize.fmin_cobyla.

The default value for the zero_phase keyword of scipy.signal.decimate has been changed to True.

The kmeans and kmeans2 functions in scipy.cluster.vq changed the method used for random initialization, so using a fixed random seed will not necessarily produce the same results as in previous versions.

scipy.special.gammaln does not accept complex arguments anymore.

The deprecated functions sph_jn, sph_yn, sph_jnyn, sph_in, sph_kn, and sph_inkn have been removed. Users should instead use the functions spherical_jn, spherical_yn, spherical_in, and spherical_kn. Be aware that the new functions have different signatures.

The cross-class properties of scipy.signal.lti systems have been removed. The following properties/setters have been removed:

Name - (accessing/setting has been removed) - (setting has been removed)

  • StateSpace - (num, den, gain) - (zeros, poles)
  • TransferFunction (A, B, C, D, gain) - (zeros, poles)
  • ZerosPolesGain (A, B, C, D, num, den) - ()

signal.freqz(b, a) with b or a >1-D raises a ValueError. This was a corner case for which it was unclear that the behavior was well-defined.

The method var of scipy.stats.dirichlet now returns a scalar rather than an ndarray when the length of alpha is 1.

Other changes

SciPy now has a formal governance structure. It consists of a BDFL (Pauli Virtanen) and a Steering Committee. See the governance document <https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst>_ for details.

It is now possible to build SciPy on Windows with MSVC + gfortran! Continuous integration has been set up for this build configuration on Appveyor, building against OpenBLAS.

Continuous integration for OS X has been set up on TravisCI.

The SciPy test suite has been migrated from nose to pytest.

scipy/_distributor_init.py was added to allow redistributors of SciPy to add custom code that needs to run when importing SciPy (e.g. checks for hardware, DLL search paths, etc.).

Support for PEP 518 (specifying build system requirements) was added - see pyproject.toml in the root of the SciPy repository.

In order to have consistent function names, the function scipy.linalg.solve_lyapunov is renamed to scipy.linalg.solve_continuous_lyapunov. The old name is kept for backwards-compatibility.

Authors

  • @arcady +
  • @xoviat +
  • Anton Akhmerov
  • Dominic Antonacci +
  • Alessandro Pietro Bardelli
  • Ved Basu +
  • Michael James Bedford +
  • Ray Bell +
  • Juan M. Bello-Rivas +
  • Sebastian Berg
  • Felix Berkenkamp
  • Jyotirmoy Bhattacharya +
  • Matthew Brett
  • Jonathan Bright
  • Bruno Jiménez +
  • Evgeni Burovski
  • Patrick Callier
  • Mark Campanelli +
  • CJ Carey
  • Robert Cimrman
  • Adam Cox +
  • Michael Danilov +
  • David Haberthür +
  • Andras Deak +
  • Philip DeBoer
  • Anne-Sylvie Deutsch
  • Cathy Douglass +
  • Dominic Else +
  • Guo Fei +
  • Roman Feldbauer +
  • Yu Feng
  • Jaime Fernandez del Rio
  • Orestis Floros +
  • David Freese +
  • Adam Geitgey +
  • James Gerity +
  • Dezmond Goff +
  • Christoph Gohlke
  • Ralf Gommers
  • Dirk Gorissen +
  • Matt Haberland +
  • David Hagen +
  • Charles Harris
  • Lam Yuen Hei +
  • Jean Helie +
  • Gaute Hope +
  • Guillaume Horel +
  • Franziska Horn +
  • Yevhenii Hyzyla +
  • Vladislav Iakovlev +
  • Marvin Kastner +
  • Mher Kazandjian
  • Thomas Keck
  • Adam Kurkiewicz +
  • Ronan Lamy +
  • J.L. Lanfranchi +
  • Eric Larson
  • Denis Laxalde
  • Gregory R. Lee
  • Felix Lenders +
  • Evan Limanto
  • Julian Lukwata +
  • François Magimel
  • Syrtis Major +
  • Charles Masson +
  • Nikolay Mayorov
  • Tobias Megies
  • Markus Meister +
  • Roman Mirochnik +
  • Jordi Montes +
  • Nathan Musoke +
  • Andrew Nelson
  • M.J. Nichol
  • Juan Nunez-Iglesias
  • Arno Onken +
  • Nick Papior +
  • Dima Pasechnik +
  • Ashwin Pathak +
  • Oleksandr Pavlyk +
  • Stefan Peterson
  • Ilhan Polat
  • Andrey Portnoy +
  • Ravi Kumar Prasad +
  • Aman Pratik
  • Eric Quintero
  • Vedant Rathore +
  • Tyler Reddy
  • Joscha Reimer
  • Philipp Rentzsch +
  • Antonio Horta Ribeiro
  • Ned Richards +
  • Kevin Rose +
  • Benoit Rostykus +
  • Matt Ruffalo +
  • Eli Sadoff +
  • Pim Schellart
  • Nico Schlömer +
  • Klaus Sembritzki +
  • Nikolay Shebanov +
  • Jonathan Tammo Siebert
  • Scott Sievert
  • Max Silbiger +
  • Mandeep Singh +
  • Michael Stewart +
  • Jonathan Sutton +
  • Deep Tavker +
  • Martin Thoma
  • James Tocknell +
  • Aleksandar Trifunovic +
  • Paul van Mulbregt +
  • Jacob Vanderplas
  • Aditya Vijaykumar
  • Pauli Virtanen
  • James Webber
  • Warren Weckesser
  • Eric Wieser +
  • Josh Wilson
  • Zhiqing Xiao +
  • Evgeny Zhurko
  • Nikolay Zinov +
  • Zé Vinícius +

A total of 121 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by rgommers over 8 years ago

scipy - SciPy 1.0.0rc2

SciPy 1.0.0 Release Notes

.. note:: Scipy 1.0.0 is not released yet!

.. contents::

SciPy 1.0.0 is the culmination of 8 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Before upgrading, we recommend that users check that their own code does not use deprecated SciPy functionality (to do so, run your code with python -Wd and check for DeprecationWarning s). Our development attention will now shift to bug-fix releases on the 1.0.x branch, and on adding new features on the master branch.

Some of the highlights of this release are:

  • Major build improvements. Windows wheels are available on PyPI for the first time, and continuous integration has been set up on Windows and OS X in addition to Linux.
  • A set of new ODE solvers and a unified interface to them (scipy.integrate.solve_ivp).
  • Two new trust region optimizers and a new linear programming method, with improved performance compared to what scipy.optimize offered previously.
  • Many new BLAS and LAPACK functions were wrapped. The BLAS wrappers are now complete.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This is also the last release to support LAPACK 3.1.x - 3.3.x. Moving the lowest supported LAPACK version to >3.2.x was long blocked by Apple Accelerate providing the LAPACK 3.2.1 API. We have decided that it's time to either drop Accelerate or, if there is enough interest, provide shims for functions added in more recent LAPACK versions so it can still be used.

New features

scipy.cluster improvements

scipy.cluster.hierarchy.optimal_leaf_ordering, a function to reorder a linkage matrix to minimize distances between adjacent leaves, was added.

scipy.fftpack improvements

N-dimensional versions of the discrete sine and cosine transforms and their inverses were added as dctn, idctn, dstn and idstn.

scipy.integrate improvements

A set of new ODE solvers have been added to scipy.integrate. The convenience function scipy.integrate.solve_ivp allows uniform access to all solvers. The individual solvers (RK23, RK45, Radau, BDF and LSODA) can also be used directly.

scipy.linalg improvements

The BLAS wrappers in scipy.linalg.blas have been completed. Added functions are *gbmv, *hbmv, *hpmv, *hpr, *hpr2, *spmv, *spr, *tbmv, *tbsv, *tpmv, *tpsv, *trsm, *trsv, *sbmv, *spr2,

Wrappers for the LAPACK functions *gels, *stev, *sytrd, *hetrd, *sytf2, *hetrf, *sytrf, *sycon, *hecon, *gglse, *stebz, *stemr, *sterf, and *stein have been added.

The function scipy.linalg.subspace_angles has been added to compute the subspace angles between two matrices.

The function scipy.linalg.clarkson_woodruff_transform has been added. It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.

The functions scipy.linalg.eigh_tridiagonal and scipy.linalg.eigvalsh_tridiagonal, which find the eigenvalues and eigenvectors of tridiagonal hermitian/symmetric matrices, were added.

scipy.ndimage improvements

Support for homogeneous coordinate transforms has been added to scipy.ndimage.affine_transform.

The ndimage C code underwent a significant refactoring, and is now a lot easier to understand and maintain.

scipy.optimize improvements

The methods trust-region-exact and trust-krylov have been added to the function scipy.optimize.minimize. These new trust-region methods solve the subproblem with higher accuracy at the cost of more Hessian factorizations (compared to dogleg) or more matrix vector products (compared to ncg) but usually require less nonlinear iterations and are able to deal with indefinite Hessians. They seem very competitive against the other Newton methods implemented in scipy.

scipy.optimize.linprog gained an interior point method. Its performance is superior (both in accuracy and speed) to the older simplex method.

scipy.signal improvements

An argument fs (sampling frequency) was added to the following functions: firwin, firwin2, firls, and remez. This makes these functions consistent with many other functions in scipy.signal in which the sampling frequency can be specified.

scipy.signal.freqz has been sped up significantly for FIR filters.

scipy.sparse improvements

Iterating over and slicing of CSC and CSR matrices is now faster by up to ~35%.

The tocsr method of COO matrices is now several times faster.

The diagonal method of sparse matrices now takes a parameter, indicating which diagonal to return.

scipy.sparse.linalg improvements

A new iterative solver for large-scale nonsymmetric sparse linear systems, scipy.sparse.linalg.gcrotmk, was added. It implements GCROT(m,k), a flexible variant of GCROT.

scipy.sparse.linalg.lsmr now accepts an initial guess, yielding potentially faster convergence.

SuperLU was updated to version 5.2.1.

scipy.spatial improvements

Many distance metrics in scipy.spatial.distance gained support for weights.

The signatures of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist were changed to *args, **kwargs in order to support a wider range of metrics (e.g. string-based metrics that need extra keywords). Also, an optional out parameter was added to pdist and cdist allowing the user to specify where the resulting distance matrix is to be stored

scipy.stats improvements

The methods cdf and logcdf were added to scipy.stats.multivariate_normal, providing the cumulative distribution function of the multivariate normal distribution.

New statistical distance functions were added, namely scipy.stats.wasserstein_distance for the first Wasserstein distance and scipy.stats.energy_distance for the energy distance.

Deprecated features

The following functions in scipy.misc are deprecated: bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow and toimage. Most of those functions have unexpected behavior (like rescaling and type casting image data without the user asking for that). Other functions simply have better alternatives.

scipy.interpolate.interpolate_wrapper and all functions in that submodule are deprecated. This was a never finished set of wrapper functions which is not relevant anymore.

The fillvalue of scipy.signal.convolve2d will be cast directly to the dtypes of the input arrays in the future and checked that it is a scalar or an array with a single element.

scipy.spatial.distance.matching is deprecated. It is an alias of scipy.spatial.distance.hamming, which should be used instead.

Implementation of scipy.spatial.distance.wminkowski was based on a wrong interpretation of the metric definition. In scipy 1.0 it has been just deprecated in the documentation to keep retro-compatibility but is recommended to use the new version of scipy.spatial.distance.minkowski that implements the correct behaviour.

Positional arguments of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist should be replaced with their keyword version.

Backwards incompatible changes

The following deprecated functions have been removed from scipy.stats: betai, chisqprob, f_value, histogram, histogram2, pdf_fromgamma, signaltonoise, square_of_sums, ss and threshold.

The following deprecated functions have been removed from scipy.stats.mstats: betai, f_value_wilks_lambda, signaltonoise and threshold.

The deprecated a and reta keywords have been removed from scipy.stats.shapiro.

The deprecated functions sparse.csgraph.cs_graph_components and sparse.linalg.symeig have been removed from scipy.sparse.

The following deprecated keywords have been removed in scipy.sparse.linalg: drop_tol from splu, and xtype from bicg, bicgstab, cg, cgs, gmres, qmr and minres.

The deprecated functions expm2 and expm3 have been removed from scipy.linalg. The deprecated keyword q was removed from scipy.linalg.expm. And the deprecated submodule linalg.calc_lwork was removed.

The deprecated functions C2K, K2C, F2C, C2F, F2K and K2F have been removed from scipy.constants.

The deprecated ppform class was removed from scipy.interpolate.

The deprecated keyword iprint was removed from scipy.optimize.fmin_cobyla.

The default value for the zero_phase keyword of scipy.signal.decimate has been changed to True.

The kmeans and kmeans2 functions in scipy.cluster.vq changed the method used for random initialization, so using a fixed random seed will not necessarily produce the same results as in previous versions.

scipy.special.gammaln does not accept complex arguments anymore.

The deprecated functions sph_jn, sph_yn, sph_jnyn, sph_in, sph_kn, and sph_inkn have been removed. Users should instead use the functions spherical_jn, spherical_yn, spherical_in, and spherical_kn. Be aware that the new functions have different signatures.

The cross-class properties of scipy.signal.lti systems have been removed. The following properties/setters have been removed:

Name - (accessing/setting has been removed) - (setting has been removed)

  • StateSpace - (num, den, gain) - (zeros, poles)
  • TransferFunction (A, B, C, D, gain) - (zeros, poles)
  • ZerosPolesGain (A, B, C, D, num, den) - ()

signal.freqz(b, a) with b or a >1-D raises a ValueError. This was a corner case for which it was unclear that the behavior was well-defined.

The method var of scipy.stats.dirichlet now returns a scalar rather than an ndarray when the length of alpha is 1.

Other changes

SciPy now has a formal governance structure. It consists of a BDFL (Pauli Virtanen) and a Steering Committee. See the governance document <https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst>_ for details.

It is now possible to build SciPy on Windows with MSVC + gfortran! Continuous integration has been set up for this build configuration on Appveyor, building against OpenBLAS.

Continuous integration for OS X has been set up on TravisCI.

The SciPy test suite has been migrated from nose to pytest.

scipy/_distributor_init.py was added to allow redistributors of SciPy to add custom code that needs to run when importing SciPy (e.g. checks for hardware, DLL search paths, etc.).

Support for PEP 518 (specifying build system requirements) was added - see pyproject.toml in the root of the SciPy repository.

In order to have consistent function names, the function scipy.linalg.solve_lyapunov is renamed to scipy.linalg.solve_continuous_lyapunov. The old name is kept for backwards-compatibility.

Authors

  • @arcady +
  • @xoviat +
  • Anton Akhmerov
  • Dominic Antonacci +
  • Alessandro Pietro Bardelli
  • Ved Basu +
  • Michael James Bedford +
  • Ray Bell +
  • Juan M. Bello-Rivas +
  • Sebastian Berg
  • Felix Berkenkamp
  • Jyotirmoy Bhattacharya +
  • Matthew Brett
  • Jonathan Bright
  • Bruno Jiménez +
  • Evgeni Burovski
  • Patrick Callier
  • Mark Campanelli +
  • CJ Carey
  • Robert Cimrman
  • Adam Cox +
  • Michael Danilov +
  • David Haberthür +
  • Andras Deak +
  • Philip DeBoer
  • Anne-Sylvie Deutsch
  • Cathy Douglass +
  • Dominic Else +
  • Guo Fei +
  • Roman Feldbauer +
  • Yu Feng
  • Jaime Fernandez del Rio
  • Orestis Floros +
  • David Freese +
  • Adam Geitgey +
  • James Gerity +
  • Dezmond Goff +
  • Christoph Gohlke
  • Ralf Gommers
  • Dirk Gorissen +
  • Matt Haberland +
  • David Hagen +
  • Charles Harris
  • Lam Yuen Hei +
  • Jean Helie +
  • Gaute Hope +
  • Guillaume Horel +
  • Franziska Horn +
  • Yevhenii Hyzyla +
  • Vladislav Iakovlev +
  • Marvin Kastner +
  • Mher Kazandjian
  • Thomas Keck
  • Adam Kurkiewicz +
  • Ronan Lamy +
  • J.L. Lanfranchi +
  • Eric Larson
  • Denis Laxalde
  • Gregory R. Lee
  • Felix Lenders +
  • Evan Limanto
  • Julian Lukwata +
  • François Magimel
  • Syrtis Major +
  • Charles Masson +
  • Nikolay Mayorov
  • Tobias Megies
  • Markus Meister +
  • Roman Mirochnik +
  • Jordi Montes +
  • Nathan Musoke +
  • Andrew Nelson
  • M.J. Nichol
  • Juan Nunez-Iglesias
  • Arno Onken +
  • Nick Papior +
  • Dima Pasechnik +
  • Ashwin Pathak +
  • Oleksandr Pavlyk +
  • Stefan Peterson
  • Ilhan Polat
  • Andrey Portnoy +
  • Ravi Kumar Prasad +
  • Aman Pratik
  • Eric Quintero
  • Vedant Rathore +
  • Tyler Reddy
  • Joscha Reimer
  • Philipp Rentzsch +
  • Antonio Horta Ribeiro
  • Ned Richards +
  • Kevin Rose +
  • Benoit Rostykus +
  • Matt Ruffalo +
  • Eli Sadoff +
  • Pim Schellart
  • Nico Schlömer +
  • Klaus Sembritzki +
  • Nikolay Shebanov +
  • Jonathan Tammo Siebert
  • Scott Sievert
  • Max Silbiger +
  • Mandeep Singh +
  • Michael Stewart +
  • Jonathan Sutton +
  • Deep Tavker +
  • Martin Thoma
  • James Tocknell +
  • Aleksandar Trifunovic +
  • Paul van Mulbregt +
  • Jacob Vanderplas
  • Aditya Vijaykumar
  • Pauli Virtanen
  • James Webber
  • Warren Weckesser
  • Eric Wieser +
  • Josh Wilson
  • Zhiqing Xiao +
  • Evgeny Zhurko
  • Nikolay Zinov +
  • Zé Vinícius +

A total of 121 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by rgommers over 8 years ago

scipy - SciPy 1.0.0rc1

SciPy 1.0.0 Release Notes

.. note:: Scipy 1.0.0 is not released yet!

.. contents::

SciPy 1.0.0 is the culmination of 8 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 1.0.x branch, and on adding new features on the master branch.

Some of the highlights of this release are:

  • Major build improvements. Windows wheels are available on PyPI for the first time, and continuous integration has been set up on Windows and OS X in addition to Linux.
  • A set of new ODE solvers and a unified interface to them (scipy.integrate.solve_ivp).
  • Two new trust region optimizers and a new linear programming method, with improved performance compared to what scipy.optimize offered previously.
  • Many new BLAS and LAPACK functions were wrapped. The BLAS wrappers are now complete.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This is also the last release to support LAPACK 3.1.x - 3.3.x. Moving the lowest supported LAPACK version to >3.2.x was long blocked by Apple Accelerate providing the LAPACK 3.2.1 API. We have decided that it's time to either drop Accelerate or, if there is enough interest, provide shims for functions added in more recent LAPACK versions so it can still be used.

New features

scipy.cluster improvements

scipy.cluster.hierarchy.optimal_leaf_ordering, a function to reorder a linkage matrix to minimize distances between adjacent leaves, was added.

scipy.fftpack improvements

N-dimensional versions of the discrete sine and cosine transforms and their inverses were added as dctn, idctn, dstn and idstn.

scipy.integrate improvements

A set of new ODE solvers have been added to scipy.integrate. The convenience function scipy.integrate.solve_ivp allows uniform access to all solvers. The individual solvers (RK23, RK45, Radau, BDF and LSODA) can also be used directly.

scipy.linalg improvements

The BLAS wrappers in scipy.linalg.blas have been completed. Added functions are *gbmv, *hbmv, *hpmv, *hpr, *hpr2, *spmv, *spr, *tbmv, *tbsv, *tpmv, *tpsv, *trsm, *trsv, *sbmv, *spr2,

Wrappers for the LAPACK functions *gels, *stev, *sytrd, *hetrd, *sytf2, *hetrf, *sytrf, *sycon, *hecon, *gglse, *stebz, *stemr, *sterf, and *stein have been added.

The function scipy.linalg.subspace_angles has been added to compute the subspace angles between two matrices.

The function scipy.linalg.clarkson_woodruff_transform has been added. It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.

The functions scipy.linalg.eigh_tridiagonal and scipy.linalg.eigvalsh_tridiagonal, which find the eigenvalues and eigenvectors of tridiagonal hermitian/symmetric matrices, were added.

scipy.ndimage improvements

Support for homogeneous coordinate transforms has been added to scipy.ndimage.affine_transform.

The ndimage C code underwent a significant refactoring, and is now a lot easier to understand and maintain.

scipy.optimize improvements

The methods trust-region-exact and trust-krylov have been added to the function scipy.optimize.minimize. These new trust-region methods solve the subproblem with higher accuracy at the cost of more Hessian factorizations (compared to dogleg) or more matrix vector products (compared to ncg) but usually require less nonlinear iterations and are able to deal with indefinite Hessians. They seem very competitive against the other Newton methods implemented in scipy.

scipy.optimize.linprog gained an interior point method. Its performance is superior (both in accuracy and speed) to the older simplex method.

scipy.signal improvements

An argument fs (sampling frequency) was added to the following functions: firwin, firwin2, firls, and remez. This makes these functions consistent with many other functions in scipy.signal in which the sampling frequency can be specified.

scipy.signal.freqz has been sped up significantly for FIR filters.

scipy.sparse improvements

Iterating over and slicing of CSC and CSR matrices is now faster by up to ~35%.

The tocsr method of COO matrices is now several times faster.

The diagonal method of sparse matrices now takes a parameter, indicating which diagonal to return.

scipy.sparse.linalg improvements

A new iterative solver for large-scale nonsymmetric sparse linear systems, scipy.sparse.linalg.gcrotmk, was added. It implements GCROT(m,k), a flexible variant of GCROT.

scipy.sparse.linalg.lsmr now accepts an initial guess, yielding potentially faster convergence.

SuperLU was updated to version 5.2.1.

scipy.spatial improvements

Many distance metrics in scipy.spatial.distance gained support for weights.

The signatures of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist were changed to *args, **kwargs in order to support a wider range of metrics (e.g. string-based metrics that need extra keywords). Also, an optional out parameter was added to pdist and cdist allowing the user to specify where the resulting distance matrix is to be stored

scipy.stats improvements

The methods cdf and logcdf were added to scipy.stats.multivariate_normal, providing the cumulative distribution function of the multivariate normal distribution.

New statistical distance functions were added, namely scipy.stats.wasserstein_distance for the first Wasserstein distance and scipy.stats.energy_distance for the energy distance.

Deprecated features

The following functions in scipy.misc are deprecated: bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow and toimage. Most of those functions have unexpected behavior (like rescaling and type casting image data without the user asking for that). Other functions simply have better alternatives.

scipy.interpolate.interpolate_wrapper and all functions in that submodule are deprecated. This was a never finished set of wrapper functions which is not relevant anymore.

The fillvalue of scipy.signal.convolve2d will be cast directly to the dtypes of the input arrays in the future and checked that it is a scalar or an array with a single element.

scipy.spatial.distance.matching is deprecated. It is an alias of scipy.spatial.distance.hamming, which should be used instead.

Implementation of scipy.spatial.distance.wminkowski was based on a wrong interpretation of the metric definition. In scipy 1.0 it has been just deprecated in the documentation to keep retro-compatibility but is recommended to use the new version of scipy.spatial.distance.minkowski that implements the correct behaviour.

Positional arguments of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist should be replaced with their keyword version.

Backwards incompatible changes

The following deprecated functions have been removed from scipy.stats: betai, chisqprob, f_value, histogram, histogram2, pdf_fromgamma, signaltonoise, square_of_sums, ss and threshold.

The following deprecated functions have been removed from scipy.stats.mstats: betai, f_value_wilks_lambda, signaltonoise and threshold.

The deprecated a and reta keywords have been removed from scipy.stats.shapiro.

The deprecated functions sparse.csgraph.cs_graph_components and sparse.linalg.symeig have been removed from scipy.sparse.

The following deprecated keywords have been removed in scipy.sparse.linalg: drop_tol from splu, and xtype from bicg, bicgstab, cg, cgs, gmres, qmr and minres.

The deprecated functions expm2 and expm3 have been removed from scipy.linalg. The deprecated keyword q was removed from scipy.linalg.expm. And the deprecated submodule linalg.calc_lwork was removed.

The deprecated functions C2K, K2C, F2C, C2F, F2K and K2F have been removed from scipy.constants.

The deprecated ppform class was removed from scipy.interpolate.

The deprecated keyword iprint was removed from scipy.optimize.fmin_cobyla.

The default value for the zero_phase keyword of scipy.signal.decimate has been changed to True.

The kmeans and kmeans2 functions in scipy.cluster.vq changed the method used for random initialization, so using a fixed random seed will not necessarily produce the same results as in previous versions.

scipy.special.gammaln does not accept complex arguments anymore.

The deprecated functions sph_jn, sph_yn, sph_jnyn, sph_in, sph_kn, and sph_inkn have been removed. Users should instead use the functions spherical_jn, spherical_yn, spherical_in, and spherical_kn. Be aware that the new functions have different signatures.

The cross-class properties of scipy.signal.lti systems have been removed. The following properties/setters have been removed:

Name - (accessing/setting has been removed) - (setting has been removed)

  • StateSpace - (num, den, gain) - (zeros, poles)
  • TransferFunction (A, B, C, D, gain) - (zeros, poles)
  • ZerosPolesGain (A, B, C, D, num, den) - ()

signal.freqz(b, a) with b or a >1-D raises a ValueError. This was a corner case for which it was unclear that the behavior was well-defined.

The method var of scipy.stats.dirichlet now returns a scalar rather than an ndarray when the length of alpha is 1.

Other changes

SciPy now has a formal governance structure. It consists of a BDFL (Pauli Virtanen) and a Steering Committee. See the governance document <https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst>_ for details.

It is now possible to build SciPy on Windows with MSVC + gfortran! Continuous integration has been set up for this build configuration on Appveyor, building against OpenBLAS.

Continuous integration for OS X has been set up on TravisCI.

The SciPy test suite has been migrated from nose to pytest.

scipy/_distributor_init.py was added to allow redistributors of SciPy to add custom code that needs to run when importing SciPy (e.g. checks for hardware, DLL search paths, etc.).

Support for PEP 518 (specifying build system requirements) was added - see pyproject.toml in the root of the SciPy repository.

In order to have consistent function names, the function scipy.linalg.solve_lyapunov is renamed to scipy.linalg.solve_continuous_lyapunov. The old name is kept for backwards-compatibility.

Authors

  • @arcady +
  • @xoviat +
  • Anton Akhmerov
  • Dominic Antonacci +
  • Alessandro Pietro Bardelli
  • Ved Basu +
  • Michael James Bedford +
  • Ray Bell +
  • Juan M. Bello-Rivas +
  • Sebastian Berg
  • Felix Berkenkamp
  • Jyotirmoy Bhattacharya +
  • Matthew Brett
  • Jonathan Bright
  • Bruno Jiménez +
  • Evgeni Burovski
  • Patrick Callier
  • Mark Campanelli +
  • CJ Carey
  • Robert Cimrman
  • Adam Cox +
  • Michael Danilov +
  • David Haberthür +
  • Andras Deak +
  • Philip DeBoer
  • Anne-Sylvie Deutsch
  • Cathy Douglass +
  • Dominic Else +
  • Guo Fei +
  • Roman Feldbauer +
  • Yu Feng
  • Jaime Fernandez del Rio
  • Orestis Floros +
  • David Freese +
  • Adam Geitgey +
  • James Gerity +
  • Dezmond Goff +
  • Christoph Gohlke
  • Ralf Gommers
  • Dirk Gorissen +
  • Matt Haberland +
  • David Hagen +
  • Charles Harris
  • Lam Yuen Hei +
  • Jean Helie +
  • Gaute Hope +
  • Guillaume Horel +
  • Franziska Horn +
  • Yevhenii Hyzyla +
  • Vladislav Iakovlev +
  • Marvin Kastner +
  • Mher Kazandjian
  • Thomas Keck
  • Adam Kurkiewicz +
  • Ronan Lamy +
  • J.L. Lanfranchi +
  • Eric Larson
  • Denis Laxalde
  • Gregory R. Lee
  • Felix Lenders +
  • Evan Limanto
  • Julian Lukwata +
  • François Magimel
  • Syrtis Major +
  • Charles Masson +
  • Nikolay Mayorov
  • Tobias Megies
  • Markus Meister +
  • Roman Mirochnik +
  • Jordi Montes +
  • Nathan Musoke +
  • Andrew Nelson
  • M.J. Nichol
  • Juan Nunez-Iglesias
  • Arno Onken +
  • Nick Papior +
  • Dima Pasechnik +
  • Ashwin Pathak +
  • Stefan Peterson
  • Ilhan Polat
  • Andrey Portnoy +
  • Ravi Kumar Prasad +
  • Aman Pratik
  • Eric Quintero
  • Vedant Rathore +
  • Tyler Reddy
  • Joscha Reimer
  • Philipp Rentzsch +
  • Antonio Horta Ribeiro
  • Ned Richards +
  • Kevin Rose +
  • Benoit Rostykus +
  • Matt Ruffalo +
  • Eli Sadoff +
  • Pim Schellart
  • Nico Schlömer +
  • Klaus Sembritzki +
  • Nikolay Shebanov +
  • Jonathan Tammo Siebert
  • Scott Sievert
  • Max Silbiger +
  • Mandeep Singh +
  • Michael Stewart +
  • Jonathan Sutton +
  • Deep Tavker +
  • Martin Thoma
  • James Tocknell +
  • Aleksandar Trifunovic +
  • Paul van Mulbregt +
  • Jacob Vanderplas
  • Aditya Vijaykumar
  • Pauli Virtanen
  • James Webber
  • Warren Weckesser
  • Eric Wieser +
  • Josh Wilson
  • Zhiqing Xiao +
  • Evgeny Zhurko
  • Nikolay Zinov +
  • Zé Vinícius +

A total of 120 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by rgommers over 8 years ago

scipy - SciPy 1.0.0b1

This is the beta release for SciPy 1.0.0

SciPy 1.0.0 Release Notes

.. note:: Scipy 1.0.0 is not released yet!

.. contents::

SciPy 1.0.0 is the culmination of 8 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 1.0.x branch, and on adding new features on the master branch.

Some of the highlights of this release are:

  • Major build improvements. Windows wheels are available on PyPI for the first time, and continuous integration has been set up on Windows and OS X in addition to Linux.
  • A set of new ODE solvers and a unified interface to them (scipy.integrate.solve_ivp).
  • Two new trust region optimizers and a new linear programming method, with improved performance compared to what scipy.optimize offered previously.
  • Many new BLAS and LAPACK functions were wrapped. The BLAS wrappers are now complete.

This release requires Python 2.7 or 3.4+ and NumPy 1.8.2 or greater.

This is also the last release to support LAPACK 3.1.x - 3.3.x. Moving the lowest supported LAPACK version to >3.2.x was long blocked by Apple Accelerate providing the LAPACK 3.2.1 API. We have decided that it's time to either drop Accelerate or, if there is enough interest, provide shims for functions added in more recent LAPACK versions so it can still be used.

New features

scipy.cluster improvements

scipy.cluster.hierarchy.optimal_leaf_ordering, a function to reorder a linkage matrix to minimize distances between adjacent leaves, was added.

scipy.fftpack improvements

N-dimensional versions of the discrete sine and cosine transforms and their inverses were added as dctn, idctn, dstn and idstn.

scipy.integrate improvements

A set of new ODE solvers have been added to scipy.integrate. The convenience function scipy.integrate.solve_ivp allows uniform access to all solvers. The individual solvers (RK23, RK45, Radau, BDF and LSODA) can also be used directly.

scipy.linalg improvements

The BLAS wrappers in scipy.linalg.blas have been completed. Added functions are *gbmv, *hbmv, *hpmv, *hpr, *hpr2, *spmv, *spr, *tbmv, *tbsv, *tpmv, *tpsv, *trsm, *trsv, *sbmv, *spr2,

Wrappers for the LAPACK functions *gels, *stev, *sytrd, *hetrd, *sytf2, *hetrf, *sytrf, *sycon, *hecon, *gglse, *stebz, *stemr, *sterf, and *stein have been added.

The function scipy.linalg.subspace_angles has been added to compute the subspace angles between two matrices.

The function scipy.linalg.clarkson_woodruff_transform has been added. It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.

The functions scipy.linalg.eigh_tridiagonal and scipy.linalg.eigvalsh_tridiagonal, which find the eigenvalues and eigenvectors of tridiagonal hermitian/symmetric matrices, were added.

scipy.ndimage improvements

Support for homogeneous coordinate transforms has been added to scipy.ndimage.affine_transform.

The ndimage C code underwent a significant refactoring, and is now a lot easier to understand and maintain.

scipy.optimize improvements

The methods trust-region-exact and trust-krylov have been added to the function scipy.optimize.minimize. These new trust-region methods solve the subproblem with higher accuracy at the cost of more Hessian factorizations (compared to dogleg) or more matrix vector products (compared to ncg) but usually require less nonlinear iterations and are able to deal with indefinite Hessians. They seem very competitive against the other Newton methods implemented in scipy.

scipy.optimize.linprog gained an interior point method. Its performance is superior (both in accuracy and speed) to the older simplex method.

scipy.signal improvements

An argument fs (sampling frequency) was added to the following functions: firwin, firwin2, firls, and remez. This makes these functions consistent with many other functions in scipy.signal in which the sampling frequency can be specified.

scipy.signal.freqz has been sped up significantly for FIR filters.

scipy.sparse improvements

Iterating over and slicing of CSC and CSR matrices is now faster by up to ~35%.

The tocsr method of COO matrices is now several times faster.

The diagonal method of sparse matrices now takes a parameter, indicating which diagonal to return.

scipy.sparse.linalg improvements

A new iterative solver for large-scale nonsymmetric sparse linear systems, scipy.sparse.linalg.gcrotmk, was added. It implements GCROT(m,k), a flexible variant of GCROT.

scipy.sparse.linalg.lsmr now accepts an initial guess, yielding potentially faster convergence.

SuperLU was updated to version 5.2.1.

scipy.spatial improvements

Many distance metrics in scipy.spatial.distance gained support for weights.

The signatures of scipy.spatial.distance.pdist and scipy.spatial.distance.cdist were changed to *args, **kwargs in order to support a wider range of metrics (e.g. string-based metrics that need extra keywords). Also, an optional out parameter was added to pdist and cdist allowing the user to specify where the resulting distance matrix is to be stored

scipy.stats improvements

The methods cdf and logcdf were added to scipy.stats.multivariate_normal, providing the cumulative distribution function of the multivariate normal distribution.

New statistical distance functions were added, namely scipy.stats.wasserstein_distance for the first Wasserstein distance and scipy.stats.energy_distance for the energy distance.

Deprecated features

The following functions in scipy.misc are deprecated: bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow and toimage. Most of those functions have unexpected behavior (like rescaling and type casting image data without the user asking for that). Other functions simply have better alternatives.

scipy.interpolate.interpolate_wrapper and all functions in that submodule are deprecated. This was a never finished set of wrapper functions which is not relevant anymore.

The fillvalue of scipy.signal.convolve2d will be cast directly to the dtypes of the input arrays in the future and checked that it is a scalar or an array with a single element.

Backwards incompatible changes

The following deprecated functions have been removed from scipy.stats: betai, chisqprob, f_value, histogram, histogram2, pdf_fromgamma, signaltonoise, square_of_sums, ss and threshold.

The following deprecated functions have been removed from scipy.stats.mstats: betai, f_value_wilks_lambda, signaltonoise and threshold.

The deprecated a and reta keywords have been removed from scipy.stats.shapiro.

The deprecated functions sparse.csgraph.cs_graph_components and sparse.linalg.symeig have been removed from scipy.sparse.

The following deprecated keywords have been removed in scipy.sparse.linalg: drop_tol from splu, and xtype from bicg, bicgstab, cg, cgs, gmres, qmr and minres.

The deprecated functions expm2 and expm3 have been removed from scipy.linalg. The deprecated keyword q was removed from scipy.linalg.expm. And the deprecated submodule linalg.calc_lwork was removed.

The deprecated functions C2K, K2C, F2C, C2F, F2K and K2F have been removed from scipy.constants.

The deprecated ppform class was removed from scipy.interpolate.

The deprecated keyword iprint was removed from scipy.optimize.fmin_cobyla.

The default value for the zero_phase keyword of scipy.signal.decimate has been changed to True.

The kmeans and kmeans2 functions in scipy.cluster.vq changed the method used for random initialization, so using a fixed random seed will not necessarily produce the same results as in previous versions.

scipy.special.gammaln does not accept complex arguments anymore.

The deprecated functions sph_jn, sph_yn, sph_jnyn, sph_in, sph_kn, and sph_inkn have been removed. Users should instead use the functions spherical_jn, spherical_yn, spherical_in, and spherical_kn. Be aware that the new functions have different signatures.

The cross-class properties of scipy.signal.lti systems have been removed. The following properties/setters have been removed:

Name - (accessing/setting has been removed) - (setting has been removed)

  • StateSpace - (num, den, gain) - (zeros, poles)
  • TransferFunction (A, B, C, D, gain) - (zeros, poles)
  • ZerosPolesGain (A, B, C, D, num, den) - ()

signal.freqz(b, a) with b or a >1-D raises a ValueError. This was a corner case for which it was unclear that the behavior was well-defined.

The method var of scipy.stats.dirichlet now returns a scalar rather than an ndarray when the length of alpha is 1.

Other changes

SciPy now has a formal governance structure. It consists of a BDFL (Pauli Virtanen) and a Steering Committee. See the governance document <https://github.com/scipy/scipy/blob/master/doc/source/dev/governance/governance.rst>_ for details.

It is now possible to build SciPy on Windows with MSVC + gfortran! Continuous integration has been set up for this build configuration on Appveyor, building against OpenBLAS.

Continuous integration for OS X has been set up on TravisCI.

The SciPy test suite has been migrated from nose to pytest.

scipy/_distributor_init.py was added to allow redistributors of SciPy to add custom code that needs to run when importing SciPy (e.g. checks for hardware, DLL search paths, etc.).

Support for PEP 518 (specifying build system requirements) was added - see pyproject.toml in the root of the SciPy repository.

In order to have consistent function names, the function scipy.linalg.solve_lyapunov is renamed to scipy.linalg.solve_continuous_lyapunov. The old name is kept for backwards-compatibility.

Authors

  • @arcady +
  • @xoviat +
  • Anton Akhmerov
  • Dominic Antonacci +
  • Alessandro Pietro Bardelli
  • Ved Basu +
  • Michael James Bedford +
  • Ray Bell +
  • Juan M. Bello-Rivas +
  • Sebastian Berg
  • Felix Berkenkamp
  • Jyotirmoy Bhattacharya +
  • Matthew Brett
  • Jonathan Bright
  • Bruno Jiménez +
  • Evgeni Burovski
  • Patrick Callier
  • Mark Campanelli +
  • CJ Carey
  • Adam Cox +
  • Michael Danilov +
  • David Haberthür +
  • Andras Deak +
  • Philip DeBoer
  • Anne-Sylvie Deutsch
  • Cathy Douglass +
  • Dominic Else +
  • Guo Fei +
  • Roman Feldbauer +
  • Yu Feng
  • Jaime Fernandez del Rio
  • Orestis Floros +
  • David Freese +
  • Adam Geitgey +
  • James Gerity +
  • Dezmond Goff +
  • Christoph Gohlke
  • Ralf Gommers
  • Dirk Gorissen +
  • Matt Haberland +
  • David Hagen +
  • Charles Harris
  • Lam Yuen Hei +
  • Jean Helie +
  • Gaute Hope +
  • Guillaume Horel +
  • Franziska Horn +
  • Yevhenii Hyzyla +
  • Vladislav Iakovlev +
  • Marvin Kastner +
  • Mher Kazandjian
  • Thomas Keck
  • Adam Kurkiewicz +
  • Ronan Lamy +
  • J.L. Lanfranchi +
  • Eric Larson
  • Denis Laxalde
  • Gregory R. Lee
  • Felix Lenders +
  • Evan Limanto
  • Julian Lukwata +
  • François Magimel
  • Syrtis Major +
  • Charles Masson +
  • Nikolay Mayorov
  • Tobias Megies
  • Markus Meister +
  • Roman Mirochnik +
  • Jordi Montes +
  • Nathan Musoke +
  • Andrew Nelson
  • M.J. Nichol
  • Nico Schlömer +
  • Juan Nunez-Iglesias
  • Arno Onken +
  • Dima Pasechnik +
  • Ashwin Pathak +
  • Stefan Peterson
  • Ilhan Polat
  • Andrey Portnoy +
  • Ravi Kumar Prasad +
  • Aman Pratik
  • Eric Quintero
  • Vedant Rathore +
  • Tyler Reddy
  • Joscha Reimer
  • Philipp Rentzsch +
  • Antonio Horta Ribeiro
  • Ned Richards +
  • Kevin Rose +
  • Benoit Rostykus +
  • Matt Ruffalo +
  • Eli Sadoff +
  • Pim Schellart
  • Klaus Sembritzki +
  • Nikolay Shebanov +
  • Jonathan Tammo Siebert
  • Scott Sievert
  • Max Silbiger +
  • Mandeep Singh +
  • Michael Stewart +
  • Jonathan Sutton +
  • Deep Tavker +
  • Martin Thoma
  • James Tocknell +
  • Aleksandar Trifunovic +
  • Paul van Mulbregt +
  • Jacob Vanderplas
  • Aditya Vijaykumar
  • Pauli Virtanen
  • James Webber
  • Warren Weckesser
  • Eric Wieser +
  • Josh Wilson
  • Zhiqing Xiao +
  • Evgeny Zhurko
  • Nikolay Zinov +
  • Zé Vinícius +

A total of 118 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by rgommers over 8 years ago

scipy - SciPy 0.19.1

SciPy 0.19.1 Release Notes

SciPy 0.19.1 is a bug-fix release with no new features compared to 0.19.0. The most important change is a fix for a severe memory leak in integrate.quad.

Authors

  • Evgeni Burovski
  • Patrick Callier +
  • Yu Feng
  • Ralf Gommers
  • Ilhan Polat
  • Eric Quintero
  • Scott Sievert
  • Pauli Virtanen
  • Warren Weckesser

A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Issues closed for 0.19.1

  • - gh-7214: Memory use in integrate.quad in scipy-0.19.0
  • - gh-7258: linalg.matrix_balance gives wrong transformation matrix
  • - gh-7262: Segfault in daily testing
  • - gh-7273: scipy.interpolate._bspl.evaluate_spline gets wrong type
  • - gh-7335: scipy.signal.dlti(A,B,C,D).freqresp() fails

Pull requests for 0.19.1

  • - gh-7211: BUG: convolve may yield inconsistent dtypes with method changed
  • - gh-7216: BUG: integrate: fix refcounting bug in quad()
  • - gh-7229: MAINT: special: Rewrite a test of wrightomega
  • - gh-7261: FIX: Corrected the transformation matrix permutation
  • - gh-7265: BUG: Fix broken axis handling in spectral functions
  • - gh-7266: FIX 7262: ckdtree crashes in query_knn.
  • - gh-7279: Upcast half- and single-precision floats to doubles in BSpline...
  • - gh-7336: BUG: Fix signal.dfreqresp for StateSpace systems
  • - gh-7419: Fix several issues in sparse.load_npz, save_npz
  • - gh-7420: BUG: stats: allow integers as kappa4 shape parameters

- Python
Published by rgommers almost 9 years ago

scipy - SciPy 0.19.0

SciPy 0.19.0 Release Notes

SciPy 0.19.0 is the culmination of 7 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 0.19.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4-3.6 and NumPy 1.8.2 or greater.

Highlights of this release include:

  • - A unified foreign function interface layer, scipy.LowLevelCallable.
  • - Cython API for scalar, typed versions of the universal functions from the scipy.special module, via cimport scipy.special.cython_special.

New features

Foreign function interface improvements


scipy.LowLevelCallable provides a new unified interface for wrapping low-level compiled callback functions in the Python space. It supports Cython imported "api" functions, ctypes function pointers, CFFI function pointers, PyCapsules, Numba jitted functions and more. See gh-6509 <https://github.com/scipy/scipy/pull/6509>_ for details.

scipy.linalg improvements


The function scipy.linalg.solve obtained two more keywords assume_a and transposed. The underlying LAPACK routines are replaced with "expert" versions and now can also be used to solve symmetric, hermitian and positive definite coefficient matrices. Moreover, ill-conditioned matrices now cause a warning to be emitted with the estimated condition number information. Old sym_pos keyword is kept for backwards compatibility reasons however it is identical to using assume_a='pos'. Moreover, the debug keyword, which had no function but only printing the overwrite_<a, b> values, is deprecated.

The function scipy.linalg.matrix_balance was added to perform the so-called matrix balancing using the LAPACK xGEBAL routine family. This can be used to approximately equate the row and column norms through diagonal similarity transformations.

The functions scipy.linalg.solve_continuous_are and scipy.linalg.solve_discrete_are have numerically more stable algorithms. These functions can also solve generalized algebraic matrix Riccati equations. Moreover, both gained a balanced keyword to turn balancing on and off.

scipy.spatial improvements


scipy.spatial.SphericalVoronoi.sort_vertices_of_regions has been re-written in Cython to improve performance.

scipy.spatial.SphericalVoronoi can handle > 200 k points (at least 10 million) and has improved performance.

The function scipy.spatial.distance.directed_hausdorff was added to calculate the directed Hausdorff distance.

count_neighbors method of scipy.spatial.cKDTree gained an ability to perform weighted pair counting via the new keywords weights and cumulative. See gh-5647 <https://github.com/scipy/scipy/pull/5647>_ for details.

scipy.spatial.distance.pdist and scipy.spatial.distance.cdist now support non-double custom metrics.

scipy.ndimage improvements


The callback function C API supports PyCapsules in Python 2.7

Multidimensional filters now allow having different extrapolation modes for different axes.

scipy.optimize improvements


The scipy.optimize.basinhopping global minimizer obtained a new keyword, seed, which can be used to seed the random number generator and obtain repeatable minimizations.

The keyword sigma in scipy.optimize.curve_fit was overloaded to also accept the covariance matrix of errors in the data.

scipy.signal improvements


The function scipy.signal.correlate and scipy.signal.convolve have a new optional parameter method. The default value of auto estimates the fastest of two computation methods, the direct approach and the Fourier transform approach.

A new function has been added to choose the convolution/correlation method, scipy.signal.choose_conv_method which may be appropriate if convolutions or correlations are performed on many arrays of the same size.

New functions have been added to calculate complex short time fourier transforms of an input signal, and to invert the transform to recover the original signal: scipy.signal.stft and scipy.signal.istft. This implementation also fixes the previously incorrect ouput of scipy.signal.spectrogram when complex output data were requested.

The function scipy.signal.sosfreqz was added to compute the frequency response from second-order sections.

The function scipy.signal.unit_impulse was added to conveniently generate an impulse function.

The function scipy.signal.iirnotch was added to design second-order IIR notch filters that can be used to remove a frequency component from a signal. The dual function scipy.signal.iirpeak was added to compute the coefficients of a second-order IIR peak (resonant) filter.

The function scipy.signal.minimum_phase was added to convert linear-phase FIR filters to minimum phase.

The functions scipy.signal.upfirdn and scipy.signal.resample_poly are now substantially faster when operating on some n-dimensional arrays when n > 1. The largest reduction in computation time is realized in cases where the size of the array is small (<1k samples or so) along the axis to be filtered.

scipy.fftpack improvements


Fast Fourier transform routines now accept np.float16 inputs and upcast them to np.float32. Previously, they would raise an error.

scipy.cluster improvements


Methods "centroid" and "median" of scipy.cluster.hierarchy.linkage have been significantly sped up. Long-standing issues with using linkage on large input data (over 16 GB) have been resolved.

scipy.sparse improvements


The functions scipy.sparse.save_npz and scipy.sparse.load_npz were added, providing simple serialization for some sparse formats.

The prune method of classes bsr_matrix, csc_matrix, and csr_matrix was updated to reallocate backing arrays under certain conditions, reducing memory usage.

The methods argmin and argmax were added to classes coo_matrix, csc_matrix, csr_matrix, and bsr_matrix.

New function scipy.sparse.csgraph.structural_rank computes the structural rank of a graph with a given sparsity pattern.

New function scipy.sparse.linalg.spsolve_triangular solves a sparse linear system with a triangular left hand side matrix.

scipy.special improvements


Scalar, typed versions of universal functions from scipy.special are available in the Cython space via cimport from the new module scipy.special.cython_special. These scalar functions can be expected to be significantly faster then the universal functions for scalar arguments. See the scipy.special tutorial for details.

Better control over special-function errors is offered by the functions scipy.special.geterr and scipy.special.seterr and the context manager scipy.special.errstate.

The names of orthogonal polynomial root functions have been changed to be consistent with other functions relating to orthogonal polynomials. For example, scipy.special.j_roots has been renamed scipy.special.roots_jacobi for consistency with the related functions scipy.special.jacobi and scipy.special.eval_jacobi. To preserve back-compatibility the old names have been left as aliases.

Wright Omega function is implemented as scipy.special.wrightomega.

scipy.stats improvements


The function scipy.stats.weightedtau was added. It provides a weighted version of Kendall's tau.

New class scipy.stats.multinomial implements the multinomial distribution.

New class scipy.stats.rv_histogram constructs a continuous univariate distribution with a piecewise linear CDF from a binned data sample.

New class scipy.stats.argus implements the Argus distribution.

scipy.interpolate improvements


New class scipy.interpolate.BSpline represents splines. BSpline objects contain knots and coefficients and can evaluate the spline. The format is consistent with FITPACK, so that one can do, for example::

>>> t, c, k = splrep(x, y, s=0)
>>> spl = BSpline(t, c, k)
>>> np.allclose(spl(x), y)

spl* functions, scipy.interpolate.splev, scipy.interpolate.splint, scipy.interpolate.splder and scipy.interpolate.splantider, accept both BSpline objects and (t, c, k) tuples for backwards compatibility.

For multidimensional splines, c.ndim > 1, BSpline objects are consistent with piecewise polynomials, scipy.interpolate.PPoly. This means that BSpline objects are not immediately consistent with scipy.interpolate.splprep, and one cannot do >>> BSpline(*splprep([x, y])[0]). Consult the scipy.interpolate test suite for examples of the precise equivalence.

In new code, prefer using scipy.interpolate.BSpline objects instead of manipulating (t, c, k) tuples directly.

New function scipy.interpolate.make_interp_spline constructs an interpolating spline given data points and boundary conditions.

New function scipy.interpolate.make_lsq_spline constructs a least-squares spline approximation given data points.

scipy.integrate improvements


Now scipy.integrate.fixed_quad supports vector-valued functions.

Deprecated features

scipy.interpolate.splmake, scipy.interpolate.spleval and scipy.interpolate.spline are deprecated. The format used by splmake/spleval was inconsistent with splrep/splev which was confusing to users.

scipy.special.errprint is deprecated. Improved functionality is available in scipy.special.seterr.

calling scipy.spatial.distance.pdist or scipy.spatial.distance.cdist with arguments not needed by the chosen metric is deprecated. Also, metrics "old_cosine" and "old_cos" are deprecated.

Backwards incompatible changes

The deprecated scipy.weave submodule was removed.

scipy.spatial.distance.squareform now returns arrays of the same dtype as the input, instead of always float64.

scipy.special.errprint now returns a boolean.

The function scipy.signal.find_peaks_cwt now returns an array instead of a list.

scipy.stats.kendalltau now computes the correct p-value in case the input contains ties. The p-value is also identical to that computed by scipy.stats.mstats.kendalltau and by R. If the input does not contain ties there is no change w.r.t. the previous implementation.

The function scipy.linalg.block_diag will not ignore zero-sized matrices anymore. Instead it will insert rows or columns of zeros of the appropriate size. See gh-4908 for more details.

Other changes

SciPy wheels will now report their dependency on numpy on all platforms. This change was made because Numpy wheels are available, and because the pip upgrade behavior is finally changing for the better (use --upgrade-strategy=only-if-needed for pip >= 8.2; that behavior will become the default in the next major version of pip).

Numerical values returned by scipy.interpolate.interp1d with kind="cubic" and "quadratic" may change relative to previous scipy versions. If your code depended on specific numeric values (i.e., on implementation details of the interpolators), you may want to double-check your results.

Authors

  • @endolith
  • Max Argus +
  • Hervé Audren
  • Alessandro Pietro Bardelli +
  • Michael Benfield +
  • Felix Berkenkamp
  • Matthew Brett
  • Per Brodtkorb
  • Evgeni Burovski
  • Pierre de Buyl
  • CJ Carey
  • Brandon Carter +
  • Tim Cera
  • Klesk Chonkin
  • Christian Häggström +
  • Luca Citi
  • Peadar Coyle +
  • Daniel da Silva +
  • Greg Dooper +
  • John Draper +
  • drlvk +
  • David Ellis +
  • Yu Feng
  • Baptiste Fontaine +
  • Jed Frey +
  • Siddhartha Gandhi +
  • Wim Glenn +
  • Akash Goel +
  • Christoph Gohlke
  • Ralf Gommers
  • Alexander Goncearenco +
  • Richard Gowers +
  • Alex Griffing
  • Radoslaw Guzinski +
  • Charles Harris
  • Callum Jacob Hays +
  • Ian Henriksen
  • Randy Heydon +
  • Lindsey Hiltner +
  • Gerrit Holl +
  • Hiroki IKEDA +
  • jfinkels +
  • Mher Kazandjian +
  • Thomas Keck +
  • keuj6 +
  • Kornel Kielczewski +
  • Sergey B Kirpichev +
  • Vasily Kokorev +
  • Eric Larson
  • Denis Laxalde
  • Gregory R. Lee
  • Josh Lefler +
  • Julien Lhermitte +
  • Evan Limanto +
  • Jin-Guo Liu +
  • Nikolay Mayorov
  • Geordie McBain +
  • Josue Melka +
  • Matthieu Melot
  • michaelvmartin15 +
  • Surhud More +
  • Brett M. Morris +
  • Chris Mutel +
  • Paul Nation
  • Andrew Nelson
  • David Nicholson +
  • Aaron Nielsen +
  • Joel Nothman
  • nrnrk +
  • Juan Nunez-Iglesias
  • Mikhail Pak +
  • Gavin Parnaby +
  • Thomas Pingel +
  • Ilhan Polat +
  • Aman Pratik +
  • Sebastian Pucilowski
  • Ted Pudlik
  • puenka +
  • Eric Quintero
  • Tyler Reddy
  • Joscha Reimer
  • Antonio Horta Ribeiro +
  • Edward Richards +
  • Roman Ring +
  • Rafael Rossi +
  • Colm Ryan +
  • Sami Salonen +
  • Alvaro Sanchez-Gonzalez +
  • Johannes Schmitz
  • Kari Schoonbee
  • Yurii Shevchuk +
  • Jonathan Siebert +
  • Jonathan Tammo Siebert +
  • Scott Sievert +
  • Sourav Singh
  • Byron Smith +
  • Srikiran +
  • Samuel St-Jean +
  • Yoni Teitelbaum +
  • Bhavika Tekwani
  • Martin Thoma
  • timbalam +
  • Svend Vanderveken +
  • Sebastiano Vigna +
  • Aditya Vijaykumar +
  • Santi Villalba +
  • Ze Vinicius
  • Pauli Virtanen
  • Matteo Visconti
  • Yusuke Watanabe +
  • Warren Weckesser
  • Phillip Weinberg +
  • Nils Werner
  • Jakub Wilk
  • Josh Wilson
  • wirew0rm +
  • David Wolever +
  • Nathan Woods
  • ybeltukov +
  • G Young
  • Evgeny Zhurko +

A total of 121 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by ev-br about 9 years ago

scipy - Scipy 0.19.0 release candidate 2

This is the second release candidate for scipy 0.19.0. See https://github.com/scipy/scipy/blob/maintenance/0.19.x/doc/release/0.19.0-notes.rst for the release notes.

The main difference to rc1 is several Windows-specific issues that were fixed (Thanks Christoph!)

Please note that this is a source-only release. OS X and manylinux1 wheels will be produced for the final release.

If no issues are reported for this release, it will become the final 0.19.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).

- Python
Published by ev-br over 9 years ago

scipy - Scipy 0.19.0 release candidate 1

This is the first release candidate for scipy 0.19.0. See https://github.com/scipy/scipy/blob/maintenance/0.19.x/doc/release/0.19.0-notes.rst for the release notes.

Please note that this is a source-only release.

If no issues are reported for this release, it will become the final 0.19.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).

- Python
Published by ev-br over 9 years ago

scipy - SciPy 0.18.1

SciPy 0.18.1 Release Notes

SciPy 0.18.1 is a bug-fix release with no new features compared to 0.18.0.

Authors

  • @kleskjr
  • Evgeni Burovski
  • CJ Carey
  • Luca Citi +
  • Yu Feng
  • Ralf Gommers
  • Johannes Schmitz +
  • Josh Wilson
  • Nathan Woods

A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

Issues closed for 0.18.1


  • - #6357 <https://github.com/scipy/scipy/issues/6357>__: scipy 0.17.1 piecewise cubic hermite interpolation does not return...
  • - #6420 <https://github.com/scipy/scipy/issues/6420>__: circmean() changed behaviour from 0.17 to 0.18
  • - #6421 <https://github.com/scipy/scipy/issues/6421>_: scipy.linalg.solvebanded overwrites input 'b' when the inversion...
  • - #6425 <https://github.com/scipy/scipy/issues/6425>__: cKDTree INF bug
  • - #6435 <https://github.com/scipy/scipy/issues/6435>_: scipy.stats.ks2samp returns different values on different computers
  • - #6458 <https://github.com/scipy/scipy/issues/6458>__: Error in scipy.integrate.dblquad when using variable integration...

Pull requests for 0.18.1


  • - #6405 <https://github.com/scipy/scipy/pull/6405>__: BUG: sparse: fix elementwise divide for CSR/CSC
  • - #6431 <https://github.com/scipy/scipy/pull/6431>__: BUG: result for insufficient neighbours from cKDTree is wrong.
  • - #6432 <https://github.com/scipy/scipy/pull/6432>_: BUG Issue #6421: scipy.linalg.solvebanded overwrites input 'b'...
  • - #6455 <https://github.com/scipy/scipy/pull/6455>__: DOC: add links to release notes
  • - #6462 <https://github.com/scipy/scipy/pull/6462>__: BUG: interpolate: fix .roots method of PchipInterpolator
  • - #6492 <https://github.com/scipy/scipy/pull/6492>__: BUG: Fix regression in dblquad: #6458
  • - #6543 <https://github.com/scipy/scipy/pull/6543>__: fix the regression in circmean
  • - #6545 <https://github.com/scipy/scipy/pull/6545>_: Revert gh-5938, restore ks2samp
  • - #6557 <https://github.com/scipy/scipy/pull/6557>__: Backports for 0.18.1

- Python
Published by ev-br over 9 years ago

scipy - 0.18.0 release tag for DOI

This is the same tag as v0.18.0, but re-issued to obtain a DOI. The content and release notes can be found here: https://github.com/scipy/scipy/releases/tag/v0.18.0

- Python
Published by pv almost 10 years ago

scipy - Scipy 0.18.0

SciPy 0.18.0 Release Notes

SciPy 0.18.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 0.19.x branch, and on adding new features on the master branch.

This release requires Python 2.7 or 3.4-3.5 and NumPy 1.7.1 or greater.

Highlights of this release include: - - A new ODE solver for two-point boundary value problems, scipy.optimize.solve_bvp. - - A new class, CubicSpline, for cubic spline interpolation of data. - - N-dimensional tensor product polynomials, scipy.interpolate.NdPPoly. - - Spherical Voronoi diagrams, scipy.spatial.SphericalVoronoi. - - Support for discrete-time linear systems, scipy.signal.dlti.

New features

scipy.integrate improvements


A solver of two-point boundary value problems for ODE systems has been implemented in scipy.integrate.solve_bvp. The solver allows for non-separated boundary conditions, unknown parameters and certain singular terms. It finds a C1 continious solution using a fourth-order collocation algorithm.

scipy.interpolate improvements


Cubic spline interpolation is now available via scipy.interpolate.CubicSpline. This class represents a piecewise cubic polynomial passing through given points and C2 continuous. It is represented in the standard polynomial basis on each segment.

A representation of n-dimensional tensor product piecewise polynomials is available as the scipy.interpolate.NdPPoly class.

Univariate piecewise polynomial classes, PPoly and Bpoly, can now be evaluated on periodic domains. Use extrapolate="periodic" keyword argument for this.

scipy.fftpack improvements


scipy.fftpack.next_fast_len function computes the next "regular" number for FFTPACK. Padding the input to this length can give significant performance increase for scipy.fftpack.fft.

scipy.signal improvements


Resampling using polyphase filtering has been implemented in the function scipy.signal.resample_poly. This method upsamples a signal, applies a zero-phase low-pass FIR filter, and downsamples using scipy.signal.upfirdn (which is also new in 0.18.0). This method can be faster than FFT-based filtering provided by scipy.signal.resample for some signals.

scipy.signal.firls, which constructs FIR filters using least-squares error minimization, was added.

scipy.signal.sosfiltfilt, which does forward-backward filtering like scipy.signal.filtfilt but for second-order sections, was added.

Discrete-time linear systems

```

scipy.signal.dlti provides an implementation of discrete-time linear systems. Accordingly, the StateSpace, TransferFunction and ZerosPolesGain classes have learned a the new keyword, dt, which can be used to create discrete-time instances of the corresponding system representation.

scipy.sparse improvements


The functions sum, max, mean, min, transpose, and reshape in scipy.sparse have had their signatures augmented with additional arguments and functionality so as to improve compatibility with analogously defined functions in numpy.

Sparse matrices now have a count_nonzero method, which counts the number of nonzero elements in the matrix. Unlike getnnz() and nnz propety, which return the number of stored entries (the length of the data attribute), this method counts the actual number of non-zero entries in data.

scipy.optimize improvements


The implementation of Nelder-Mead minimization, scipy.minimize(..., method="Nelder-Mead"), obtained a new keyword, initial_simplex, which can be used to specify the initial simplex for the optimization process.

Initial step size selection in CG and BFGS minimizers has been improved. We expect that this change will improve numeric stability of optimization in some cases. See pull request gh-5536 for details.

Handling of infinite bounds in SLSQP optimization has been improved. We expect that this change will improve numeric stability of optimization in the some cases. See pull request gh-6024 for details.

A large suite of global optimization benchmarks has been added to scipy/benchmarks/go_benchmark_functions. See pull request gh-4191 for details.

Nelder-Mead and Powell minimization will now only set defaults for maximum iterations or function evaluations if neither limit is set by the caller. In some cases with a slow converging function and only 1 limit set, the minimization may continue for longer than with previous versions and so is more likely to reach convergence. See issue gh-5966.

scipy.stats improvements


Trapezoidal distribution has been implemented as scipy.stats.trapz. Skew normal distribution has been implemented as scipy.stats.skewnorm. Burr type XII distribution has been implemented as scipy.stats.burr12. Three- and four-parameter kappa distributions have been implemented as scipy.stats.kappa3 and scipy.stats.kappa4, respectively.

New scipy.stats.iqr function computes the interquartile region of a distribution.

Random matrices ```

scipy.stats.special_ortho_group and scipy.stats.ortho_group provide generators of random matrices in the SO(N) and O(N) groups, respectively. They generate matrices in the Haar distribution, the only uniform distribution on these group manifolds.

scipy.stats.random_correlation provides a generator for random correlation matrices, given specified eigenvalues.

scipy.linalg improvements


scipy.linalg.svd gained a new keyword argument, lapack_driver. Available drivers are gesdd (default) and gesvd.

scipy.linalg.lapack.ilaver returns the version of the LAPACK library SciPy links to.

scipy.spatial improvements


Boolean distances, scipy.spatial.pdist, have been sped up. Improvements vary by the function and the input size. In many cases, one can expect a speed-up of x2--x10.

New class scipy.spatial.SphericalVoronoi constructs Voronoi diagrams on the surface of a sphere. See pull request gh-5232 for details.

scipy.cluster improvements


A new clustering algorithm, the nearest neighbor chain algorithm, has been implemented for scipy.cluster.hierarchy.linkage. As a result, one can expect a significant algorithmic improvement (:math:O(N^2) instead of :math:O(N^3)) for several linkage methods.

scipy.special improvements


The new function scipy.special.loggamma computes the principal branch of the logarithm of the Gamma function. For real input, loggamma is compatible with scipy.special.gammaln. For complex input, it has more consistent behavior in the complex plane and should be preferred over gammaln.

Vectorized forms of spherical Bessel functions have been implemented as scipy.special.spherical_jn, scipy.special.spherical_kn, scipy.special.spherical_in and scipy.special.spherical_yn. They are recommended for use over sph_* functions, which are now deprecated.

Several special functions have been extended to the complex domain and/or have seen domain/stability improvements. This includes spence, digamma, log1p and several others.

Deprecated features

The cross-class properties of lti systems have been deprecated. The following properties/setters will raise a DeprecationWarning:

Name - (accessing/setting raises warning) - (setting raises warning) - StateSpace - (num, den, gain) - (zeros, poles) - TransferFunction (A, B, C, D, gain) - (zeros, poles) - ZerosPolesGain (A, B, C, D, num, den) - ()

Spherical Bessel functions, sph_in, sph_jn, sph_kn, sph_yn, sph_jnyn and sph_inkn have been deprecated in favor of scipy.special.spherical_jn and spherical_kn, spherical_yn, spherical_in.

The following functions in scipy.constants are deprecated: C2K, K2C, C2F, F2C, F2K and K2F. They are superceded by a new function scipy.constants.convert_temperature that can perform all those conversions plus to/from the Rankine temperature scale.

Backwards incompatible changes

scipy.optimize


The convergence criterion for optimize.bisect, optimize.brentq, optimize.brenth, and optimize.ridder now works the same as numpy.allclose.

scipy.ndimage


The offset in ndimage.iterpolation.affine_transform is now consistently added after the matrix is applied, independent of if the matrix is specified using a one-dimensional or a two-dimensional array.

scipy.stats


stats.ks_2samp used to return nonsensical values if the input was not real or contained nans. It now raises an exception for such inputs.

Several deprecated methods of scipy.stats distributions have been removed: est_loc_scale, vecfunc, veccdf and vec_generic_moment.

Deprecated functions nanmean, nanstd and nanmedian have been removed from scipy.stats. These functions were deprecated in scipy 0.15.0 in favor of their numpy equivalents.

A bug in the rvs() method of the distributions in scipy.stats has been fixed. When arguments to rvs() were given that were shaped for broadcasting, in many cases the returned random samples were not random. A simple example of the problem is stats.norm.rvs(loc=np.zeros(10)). Because of the bug, that call would return 10 identical values. The bug only affected code that relied on the broadcasting of the shape, location and scale parameters.

The rvs() method also accepted some arguments that it should not have. There is a potential for backwards incompatibility in cases where rvs() accepted arguments that are not, in fact, compatible with broadcasting. An example is

stats.gamma.rvs([2, 5, 10, 15], size=(2,2))

The shape of the first argument is not compatible with the requested size, but the function still returned an array with shape (2, 2). In scipy 0.18, that call generates a ValueError.

scipy.io


scipy.io.netcdf masking now gives precedence to the _FillValue attribute over the missing_value attribute, if both are given. Also, data are only treated as missing if they match one of these attributes exactly: values that differ by roundoff from _FillValue or missing_value are no longer treated as missing values.

scipy.interpolate


scipy.interpolate.PiecewisePolynomial class has been removed. It has been deprecated in scipy 0.14.0, and scipy.interpolate.BPoly.from_derivatives serves as a drop-in replacement.

Other changes

Scipy now uses setuptools for its builds instead of plain distutils. This fixes usage of install_requires='scipy' in the setup.py files of projects that depend on Scipy (see Numpy issue gh-6551 for details). It potentially affects the way that build/install methods for Scipy itself behave though. Please report any unexpected behavior on the Scipy issue tracker.

PR #6240 <https://github.com/scipy/scipy/pull/6240>__ changes the interpretation of the maxfun option in L-BFGS-B based routines in the scipy.optimize module. An L-BFGS-B search consists of multiple iterations, with each iteration consisting of one or more function evaluations. Whereas the old search strategy terminated immediately upon reaching maxfun function evaluations, the new strategy allows the current iteration to finish despite reaching maxfun.

The bundled copy of Qhull in the scipy.spatial subpackage has been upgraded to version 2015.2.

The bundled copy of ARPACK in the scipy.sparse.linalg subpackage has been upgraded to arpack-ng 3.3.0.

The bundled copy of SuperLU in the scipy.sparse subpackage has been upgraded to version 5.1.1.

Authors

  • @endolith
  • @yanxun827 +
  • @kleskjr +
  • @MYheavyGo +
  • @solarjoe +
  • Gregory Allen +
  • Gilles Aouizerate +
  • Tom Augspurger +
  • Henrik Bengtsson +
  • Felix Berkenkamp
  • Per Brodtkorb
  • Lars Buitinck
  • Daniel Bunting +
  • Evgeni Burovski
  • CJ Carey
  • Tim Cera
  • Grey Christoforo +
  • Robert Cimrman
  • Philip DeBoer +
  • Yves Delley +
  • Dávid Bodnár +
  • Ion Elberdin +
  • Gabriele Farina +
  • Yu Feng
  • Andrew Fowlie +
  • Joseph Fox-Rabinovitz
  • Simon Gibbons +
  • Neil Girdhar +
  • Kolja Glogowski +
  • Christoph Gohlke
  • Ralf Gommers
  • Todd Goodall +
  • Johnnie Gray +
  • Alex Griffing
  • Olivier Grisel
  • Thomas Haslwanter +
  • Michael Hirsch +
  • Derek Homeier
  • Golnaz Irannejad +
  • Marek Jacob +
  • InSuk Joung +
  • Tetsuo Koyama +
  • Eugene Krokhalev +
  • Eric Larson
  • Denis Laxalde
  • Antony Lee
  • Jerry Li +
  • Henry Lin +
  • Nelson Liu +
  • Loïc Estève
  • Lei Ma +
  • Osvaldo Martin +
  • Stefano Martina +
  • Nikolay Mayorov
  • Matthieu Melot +
  • Sturla Molden
  • Eric Moore
  • Alistair Muldal +
  • Maniteja Nandana
  • Tavi Nathanson +
  • Andrew Nelson
  • Joel Nothman
  • Behzad Nouri
  • Nikolai Nowaczyk +
  • Juan Nunez-Iglesias +
  • Ted Pudlik
  • Eric Quintero
  • Yoav Ram
  • Jonas Rauber +
  • Tyler Reddy +
  • Juha Remes
  • Garrett Reynolds +
  • Ariel Rokem +
  • Fabian Rost +
  • Bill Sacks +
  • Jona Sassenhagen +
  • Kari Schoonbee +
  • Marcello Seri +
  • Sourav Singh +
  • Martin Spacek +
  • Søren Fuglede Jørgensen +
  • Bhavika Tekwani +
  • Martin Thoma +
  • Sam Tygier +
  • Meet Udeshi +
  • Utkarsh Upadhyay
  • Bram Vandekerckhove +
  • Sebastián Vanrell +
  • Ze Vinicius +
  • Pauli Virtanen
  • Stefan van der Walt
  • Warren Weckesser
  • Jakub Wilk +
  • Josh Wilson
  • Phillip J. Wolfram +
  • Nathan Woods
  • Haochen Wu
  • G Young +

A total of 99 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by ev-br almost 10 years ago

scipy - release candidate 2 for scipy 0.18.0

This is the second rc for scipy 0.18.0. Please test it --- both the release itself on your machines and your code against this release --- and report breakage (hopefully, there isn't one) on Github issue tracker or scipy-dev mailing list.

If no issues are reported for this rc, it will graduate into the final release.

- Python
Published by ev-br almost 10 years ago

scipy - 0.18.0 release candidate 1

This is the first release candidate for scipy 0.18.0. See https://github.com/scipy/scipy/blob/maintenance/0.18.x/doc/release/0.18.0-notes.rst for the release notes.

Please note that this is a source-only release.

If no issues are reported for this release, it will become the final 0.18.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).

- Python
Published by ev-br almost 10 years ago

scipy - Scipy 0.17.1

SciPy 0.17.1 Release Notes

SciPy 0.17.1 is a bug-fix release with no new features compared to 0.17.0.

- Python
Published by ev-br about 10 years ago

scipy - Scipy 0.17.0

SciPy 0.17.0 Release Notes

SciPy 0.17.0 is the culmination of 6 months of hard work. It contains many new features, numerous bug-fixes, improved test coverage and better documentation. There have been a number of deprecations and API changes in this release, which are documented below. All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. Moreover, our development attention will now shift to bug-fix releases on the 0.17.x branch, and on adding new features on the master branch.

This release requires Python 2.6, 2.7 or 3.2-3.5 and NumPy 1.6.2 or greater.

Release highlights:

- New functions for linear and nonlinear least squares optimization with constraints: `scipy.optimize.lsq_linear` and `scipy.optimize.least_squares` - Support for fitting with bounds in `scipy.optimize.curve_fit`. - Significant improvements to `scipy.stats`, providing many functions with better handing of inputs which have NaNs or are empty, improved documentation, and consistent behavior between `scipy.stats` and `scipy.stats.mstats`. - Significant performance improvements and new functionality in `scipy.spatial.cKDTree`.

New features

scipy.cluster improvements


A new function scipy.cluster.hierarchy.cut_tree, which determines a cut tree from a linkage matrix, was added.

scipy.io improvements


scipy.io.mmwrite gained support for symmetric sparse matrices.

scipy.io.netcdf gained support for masking and scaling data based on data attributes.

scipy.optimize improvements


Linear assignment problem solver

```

scipy.optimize.linear_sum_assignment is a new function for solving the linear sum assignment problem. It uses the Hungarian algorithm (Kuhn-Munkres).

Least squares optimization ```

A new function for nonlinear least squares optimization with constraints was added: scipy.optimize.least_squares. It provides several methods: Levenberg-Marquardt for unconstrained problems, and two trust-region methods for constrained ones. Furthermore it provides different loss functions. New trust-region methods also handle sparse Jacobians.

A new function for linear least squares optimization with constraints was added: scipy.optimize.lsq_linear. It provides a trust-region method as well as an implementation of the Bounded-Variable Least-Squares (BVLS) algorithm.

scipy.optimize.curve_fit now supports fitting with bounds.

scipy.signal improvements


A mode keyword was added to scipy.signal.spectrogram, to let it return other spectrograms than power spectral density.

scipy.stats improvements


Many functions in scipy.stats have gained a nan_policy keyword, which allows specifying how to treat input with NaNs in them: propagate the NaNs, raise an error, or omit the NaNs.

Many functions in scipy.stats have been improved to correctly handle input arrays that are empty or contain infs/nans.

A number of functions with the same name in scipy.stats and scipy.stats.mstats were changed to have matching signature and behavior. See gh-5474 <https://github.com/scipy/scipy/issues/5474>__ for details.

scipy.stats.binom_test and scipy.stats.mannwhitneyu gained a keyword alternative, which allows specifying the hypothesis to test for. Eventually all hypothesis testing functions will get this keyword.

For methods of many continuous distributions, complex input is now accepted.

Matrix normal distribution has been implemented as scipy.stats.matrix_normal.

scipy.sparse improvements


The axis keyword was added to sparse norms, scipy.sparse.linalg.norm.

scipy.spatial improvements


scipy.spatial.cKDTree was partly rewritten for improved performance and several new features were added to it: - - the query_ball_point method became significantly faster - - query and query_ball_point gained an n_jobs keyword for parallel execution - - build and query methods now release the GIL - - full pickling support - - support for periodic spaces - - the sparse_distance_matrix method can now return and sparse matrix type

scipy.interpolate improvements


Out-of-bounds behavior of scipy.interpolate.interp1d has been improved. Use a two-element tuple for the fill_value argument to specify separate fill values for input below and above the interpolation range. Linear and nearest interpolation kinds of scipy.interpolate.interp1d support extrapolation via the fill_value="extrapolate" keyword.

fill_value can also be set to an array-like (or a two-element tuple of array-likes for separate below and above values) so long as it broadcasts properly to the non-interpolated dimensions of an array. This was implicitly supported by previous versions of scipy, but support has now been formalized and gets compatibility-checked before use. For example, a set of y values to interpolate with shape (2, 3, 5) interpolated along the last axis (2) could accept a fill_value array with shape () (singleton), (1,), (2, 1), (1, 3), (3,), or (2, 3); or it can be a 2-element tuple to specify separate below and above bounds, where each of the two tuple elements obeys proper broadcasting rules.

scipy.linalg improvements


The default algorithm for scipy.linalg.leastsq has been changed to use LAPACK's function *gelsd. Users wanting to get the previous behavior can use a new keyword lapack_driver="gelss" (allowed values are "gelss", "gelsd" and "gelsy").

scipy.sparse matrices and linear operators now support the matmul (@) operator when available (Python 3.5+). See PEP 465

A new function scipy.linalg.ordqz, for QZ decomposition with reordering, has been added.

Deprecated features

scipy.stats.histogram is deprecated in favor of np.histogram, which is faster and provides the same functionality.

scipy.stats.threshold and scipy.mstats.threshold are deprecated in favor of np.clip. See issue #617 for details.

scipy.stats.ss is deprecated. This is a support function, not meant to be exposed to the user. Also, the name is unclear. See issue #663 for details.

scipy.stats.square_of_sums is deprecated. This too is a support function not meant to be exposed to the user. See issues #665 and #663 for details.

scipy.stats.f_value, scipy.stats.f_value_multivariate, scipy.stats.f_value_wilks_lambda, and scipy.mstats.f_value_wilks_lambda are deprecated. These are related to ANOVA, for which scipy.stats provides quite limited functionality and these functions are not very useful standalone. See issues #660 and #650 for details.

scipy.stats.chisqprob is deprecated. This is an alias. stats.chi2.sf should be used instead.

scipy.stats.betai is deprecated. This is an alias for special.betainc which should be used instead.

Backwards incompatible changes

The functions stats.trim1 and stats.trimboth now make sure the elements trimmed are the lowest and/or highest, depending on the case. Slicing without at least partial sorting was previously done, but didn't make sense for unsorted input.

When variable_names is set to an empty list, scipy.io.loadmat now correctly returns no values instead of all the contents of the MAT file.

Element-wise multiplication of sparse matrices now returns a sparse result in all cases. Previously, multiplying a sparse matrix with a dense matrix or array would return a dense matrix.

The function misc.lena has been removed due to license incompatibility.

The constructor for sparse.coo_matrix no longer accepts (None, (m,n)) to construct an all-zero matrix of shape (m,n). This functionality was deprecated since at least 2007 and was already broken in the previous SciPy release. Use coo_matrix((m,n)) instead.

The Cython wrappers in linalg.cython_lapack for the LAPACK routines *gegs, *gegv, *gelsx, *geqpf, *ggsvd, *ggsvp, *lahrd, *latzm, *tzrqf have been removed since these routines are not present in the new LAPACK 3.6.0 release. With the exception of the routines *ggsvd and *ggsvp, these were all deprecated in favor of routines that are currently present in our Cython LAPACK wrappers.

Because the LAPACK *gegv routines were removed in LAPACK 3.6.0. The corresponding Python wrappers in scipy.linalg.lapack are now deprecated and will be removed in a future release. The source files for these routines have been temporarily included as a part of scipy.linalg so that SciPy can be built against LAPACK versions that do not provide these deprecated routines.

Other changes

Html and pdf documentation of development versions of Scipy is now automatically rebuilt after every merged pull request.

scipy.constants is updated to the CODATA 2014 recommended values.

Usage of scipy.fftpack functions within Scipy has been changed in such a way that PyFFTW <http://hgomersall.github.io/pyFFTW/>__ can easily replace scipy.fftpack functions (with improved performance). See gh-5295 <https://github.com/scipy/scipy/pull/5295>__ for details.

The imread functions in scipy.misc and scipy.ndimage were unified, for which a mode argument was added to scipy.misc.imread. Also, bugs for 1-bit and indexed RGB image formats were fixed.

runtests.py, the development script to build and test Scipy, now allows building in parallel with --parallel.

Authors

  • @cel4 +
  • @chemelnucfin +
  • @endolith
  • @mamrehn +
  • @tosh1ki +
  • Joshua L. Adelman +
  • Anne Archibald
  • Hervé Audren +
  • Vincent Barrielle +
  • Bruno Beltran +
  • Sumit Binnani +
  • Joseph Jon Booker
  • Olga Botvinnik +
  • Michael Boyle +
  • Matthew Brett
  • Zaz Brown +
  • Lars Buitinck
  • Pete Bunch +
  • Evgeni Burovski
  • CJ Carey
  • Ien Cheng +
  • Cody +
  • Jaime Fernandez del Rio
  • Ales Erjavec +
  • Abraham Escalante
  • Yves-Rémi Van Eycke +
  • Yu Feng +
  • Eric Firing
  • Francis T. O'Donovan +
  • André Gaul
  • Christoph Gohlke
  • Ralf Gommers
  • Alex Griffing
  • Alexander Grigorievskiy
  • Charles Harris
  • Jörn Hees +
  • Ian Henriksen
  • Derek Homeier +
  • David Menéndez Hurtado
  • Gert-Ludwig Ingold
  • Aakash Jain +
  • Rohit Jamuar +
  • Jan Schlüter
  • Johannes Ballé
  • Luke Zoltan Kelley +
  • Jason King +
  • Andreas Kopecky +
  • Eric Larson
  • Denis Laxalde
  • Antony Lee
  • Gregory R. Lee
  • Josh Levy-Kramer +
  • Sam Lewis +
  • François Magimel +
  • Martín Gaitán +
  • Sam Mason +
  • Andreas Mayer
  • Nikolay Mayorov
  • Damon McDougall +
  • Robert McGibbon
  • Sturla Molden
  • Will Monroe +
  • Eric Moore
  • Maniteja Nandana
  • Vikram Natarajan +
  • Andrew Nelson
  • Marti Nito +
  • Behzad Nouri +
  • Daisuke Oyama +
  • Giorgio Patrini +
  • Fabian Paul +
  • Christoph Paulik +
  • Mad Physicist +
  • Irvin Probst
  • Sebastian Pucilowski +
  • Ted Pudlik +
  • Eric Quintero
  • Yoav Ram +
  • Joscha Reimer +
  • Juha Remes
  • Frederik Rietdijk +
  • Rémy Léone +
  • Christian Sachs +
  • Skipper Seabold
  • Sebastian Skoupý +
  • Alex Seewald +
  • Andreas Sorge +
  • Bernardo Sulzbach +
  • Julian Taylor
  • Louis Tiao +
  • Utkarsh Upadhyay +
  • Jacob Vanderplas
  • Gael Varoquaux +
  • Pauli Virtanen
  • Fredrik Wallner +
  • Stefan van der Walt
  • James Webber +
  • Warren Weckesser
  • Raphael Wettinger +
  • Josh Wilson +
  • Nat Wilson +
  • Peter Yin +

A total of 101 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.

- Python
Published by ev-br over 10 years ago

scipy - 0.17.0 release candidate 2

This is the second release candidate for scipy 0.17.0. See https://github.com/scipy/scipy/blob/maintenance/0.17.x/doc/release/0.17.0-notes.rst for the release notes.

Please note that this is a source-only release: we do not provide win32 installers for scipy 0.17.0.

If no issues are reported for this release, it will become the final 0.17.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).

- Python
Published by ev-br over 10 years ago

scipy - 0.17.0 release candidate 1

This is the first release candidate for scipy 0.17.0. See https://github.com/scipy/scipy/blob/maintenance/0.17.x/doc/release/0.17.0-notes.rst for the release notes.

Please note that this is a source-only release: we do not provide win32 installers for scipy 0.17.0.

If no issues are reported for this release, it will become the final 0.17.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).

- Python
Published by ev-br over 10 years ago

scipy - this is not a release

This is just a random binary built from a random snapshot of a development branch, subject to be removed at any time. Do not use it for anything.

- Python
Published by ev-br over 10 years ago