Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update scipy to 1.14.0 #258

Closed
wants to merge 1 commit into from
Closed

Conversation

pyup-bot
Copy link
Collaborator

This PR updates scipy from 1.12.0 to 1.14.0.

Changelog

1.14.0

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.

1.13.1

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.

1.13.0

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.
Links

@pyup-bot pyup-bot mentioned this pull request Jun 24, 2024
@stephenhky stephenhky closed this Jul 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants