[Numpy-discussion] ANN: scipy 0.19.0 release candidate 1
evgeny.burovskiy at gmail.com
Wed Feb 15 15:48:04 EST 2017
I'm pleased to announce the availability of the first release
candidate for scipy 0.19.0. It contains contributions from 120 people
over the course of seven months.
Please try this release and report any issues on Github tracker,
https://github.com/scipy/scipy, or scipy-dev mailing list.
Source tarballs and release notes are available from Github releases,
Please note that this is a source-only release. We do not provide
Windows binaries for this release. OS X and Linux wheels will be
provided for the final release.
The current release schedule is
22 Feb : 0.19.0rc2, if needed
09 Mar : 0.19.0 final
Thanks to everyone who contributed to this release!
A part of the release notes follows below:
SciPy 0.19.0 Release Notes
.. note:: Scipy 0.19.0 is not released yet!
SciPy 0.19.0 is the culmination of X 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`.
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.
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
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
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.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
The callback function C API supports PyCapsules in Python 2.7
Multidimensional filters now allow having different extrapolation modes for
The `scipy.optimize.basinhopping` global minimizer obtained a new keyword,
`seed`, which can be used to seed the random number generator and obtain
The keyword `sigma` in `scipy.optimize.curve_fit` was overloaded to also accept
the covariance matrix of errors in the data.
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
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.
Fast Fourier transform routines now accept `np.float16` inputs and upcast
them to `np.float32`. Previously, they would raise an error.
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.
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
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.
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`.
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.
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]))``. 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.
Now `scipy.integrate.fixed_quad` supports vector-valued functions.
`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`.
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
`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
Instead it will insert rows or columns of zeros of the appropriate size.
See gh-4908 for more details.
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.
* 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 +
* GiggleLiu +
* Wim Glenn +
* Akash Goel +
* 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 +
* 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 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.
More information about the NumPy-Discussion