- SciPy 0.16.0 Release Notes
- New features
- Deprecated features
- Backwards incompatible changes
- Other changes
SciPy 0.16.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.16.x branch, and on adding new features on the master branch.
This release requires Python 2.6, 2.7 or 3.2-3.4 and NumPy 1.6.2 or greater.
Highlights of this release include:
- A Cython API for BLAS/LAPACK in scipy.linalg
- A new benchmark suite. It’s now straightforward to add new benchmarks, and they’re routinely included with performance enhancement PRs.
- Support for the second order sections (SOS) format in scipy.signal.
The benchmark suite has switched to using Airspeed Velocity for benchmarking. You can run the suite locally via python runtests.py --bench. For more details, see benchmarks/README.rst.
A full set of Cython wrappers for BLAS and LAPACK has been added in the modules scipy.linalg.cython_blas and scipy.linalg.cython_lapack. In Cython, these wrappers can now be cimported from their corresponding modules and used without linking directly against BLAS or LAPACK.
The function scipy.linalg.solve_circulant solves a linear system with a circulant coefficient matrix.
The function scipy.linalg.invpascal computes the inverse of a Pascal matrix.
The function scipy.linalg.solve_toeplitz, a Levinson-Durbin Toeplitz solver, was added.
Added wrapper for potentially useful LAPACK function *lasd4. It computes the square root of the i-th updated eigenvalue of a positive symmetric rank-one modification to a positive diagonal matrix. See its LAPACK documentation and unit tests for it to get more info.
Added two extra wrappers for LAPACK least-square solvers. Namely, they are *gelsd and *gelsy.
Wrappers for the LAPACK *lange functions, which calculate various matrix norms, were added.
Wrappers for *gtsv and *ptsv, which solve A*X = B for tri-diagonal matrix A, were added.
Support for second order sections (SOS) as a format for IIR filters was added. The new functions are:
Additionally, the filter design functions iirdesign, iirfilter, butter, cheby1, cheby2, ellip, and bessel can return the filter in the SOS format.
The function scipy.signal.place_poles, which provides two methods to place poles for linear systems, was added.
The option to use Gustafsson’s method for choosing the initial conditions of the forward and backward passes was added to scipy.signal.filtfilt.
New classes TransferFunction, StateSpace and ZerosPolesGain were added. These classes are now returned when instantiating scipy.signal.lti. Conversion between those classes can be done explicitly now.
The function for computing digital filter group delay was added as scipy.signal.group_delay.
The functionality for spectral analysis and spectral density estimation has been significantly improved: scipy.signal.welch became ~8x faster and the functions scipy.signal.spectrogram, scipy.signal.coherence and scipy.signal.csd (cross-spectral density) were added.
scipy.signal.lsim was rewritten - all known issues are fixed, so this function can now be used instead of lsim2; lsim is orders of magnitude faster than lsim2 in most cases.
The function scipy.sparse.norm, which computes sparse matrix norms, was added.
The function scipy.sparse.random, which allows to draw random variates from an arbitrary distribution, was added.
scipy.spatial.cKDTree has seen a major rewrite, which improved the performance of the query method significantly, added support for parallel queries, pickling, and options that affect the tree layout. See pull request 4374 for more details.
The function scipy.spatial.procrustes for Procrustes analysis (statistical shape analysis) was added.
The Exponentially Modified Normal distribution has been added as scipy.stats.exponnorm.
The Generalized Normal distribution has been added as scipy.stats.gennorm.
All distributions now contain a random_state property and allow specifying a specific numpy.random.RandomState random number generator when generating random variates.
Many statistical tests and other scipy.stats functions that have multiple return values now return namedtuples. See pull request 4709 for details.
scipy.stats.pdf_fromgamma is deprecated. This function was undocumented, untested and rarely used. Statsmodels provides equivalent functionality with statsmodels.distributions.ExpandedNormal.
scipy.stats.fastsort is deprecated. This function is unnecessary, numpy.argsort can be used instead.
scipy.stats.signaltonoise and scipy.stats.mstats.signaltonoise are deprecated. These functions did not belong in scipy.stats and are rarely used. See issue #609 for details.
scipy.stats.histogram2 is deprecated. This function is unnecessary, numpy.histogram2d can be used instead.
The deprecated global optimizer scipy.optimize.anneal was removed.
The following deprecated modules have been removed: scipy.lib.blas, scipy.lib.lapack, scipy.linalg.cblas, scipy.linalg.fblas, scipy.linalg.clapack, scipy.linalg.flapack. They had been deprecated since Scipy 0.12.0, the functionality should be accessed as scipy.linalg.blas and scipy.linalg.lapack.
The deprecated function scipy.special.all_mat has been removed.
The deprecated functions fprob, ksprob, zprob, randwcdf and randwppf have been removed from scipy.stats.