SciPy v1.6.0.rc1 Release Notes

Release Date: 2020-12-11 // 12 months ago
  • πŸš€ 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
    0️⃣ 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.


Previous changes from v1.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.