Skip to content

Releases: scipy/scipy

Scipy 0.17.1

12 May 11:40
v0.17.1
Compare
Choose a tag to compare

SciPy 0.17.1 Release Notes

SciPy 0.17.1 is a bug-fix release with no new features compared to 0.17.0.

Scipy 0.17.0

23 Jan 11:56
v0.17.0
Compare
Choose a tag to compare

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
  • Alexan...
Read more

0.17.0 release candidate 2

07 Jan 23:23
v0.17.0rc2
Compare
Choose a tag to compare
Pre-release

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

0.17.0 release candidate 1

23 Dec 11:58
v0.17.0rc1
Compare
Choose a tag to compare

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

this is not a release

26 Nov 20:13
Compare
Choose a tag to compare
this is not a release Pre-release
Pre-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.

Scipy 0.16.1

24 Oct 23:46
Compare
Choose a tag to compare

SciPy 0.16.1 Release Notes

SciPy 0.16.1 is a bug-fix release with no new features compared to 0.16.0.

0.16.0

24 Jul 19:24
Compare
Choose a tag to compare

SciPy 0.16.0 Release Notes

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.

New features

Benchmark suite

The benchmark suite has switched to using Airspeed Velocity <http://spacetelescope.github.io/asv/>__ for benchmarking. You can
run the suite locally via python runtests.py --bench. For more
details, see benchmarks/README.rst.

scipy.linalg improvements

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 functions scipy.linalg.qr_delete, scipy.linalg.qr_insert and
scipy.linalg.qr_update for updating QR decompositions were added.

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.

scipy.signal improvements

Support for second order sections (SOS) as a format for IIR filters
was added. The new functions are:

  • scipy.signal.sosfilt
  • scipy.signal.sosfilt_zi,
  • scipy.signal.sos2tf
  • scipy.signal.sos2zpk
  • scipy.signal.tf2sos
  • scipy.signal.zpk2sos.

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.

An exponential (Poisson) window was added as scipy.signal.exponential, and a
Tukey window was added as scipy.signal.tukey.

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.

scipy.sparse improvements

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 improvements

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.

scipy.stats improvements

The Wishart distribution and its inverse have been added, as
scipy.stats.wishart and scipy.stats.invwishart.

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.optimize improvements

A new derivative-free method DF-SANE has been added to the nonlinear equation
system solving function scipy.optimize.root.

Deprecated features

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.

Backwards incompatible changes

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.

Other changes

The version numbering for development builds has been updated to comply with PEP 440.

Building with python setup.py develop is now supported.

Authors

  • @Axiru +
  • @endolith
  • Elliott Sales de Andrade +
  • Anne Archibald
  • Yoshiki Vázquez Baeza +
  • Sylvain Bellemare
  • Felix Berkenkamp +
  • Raoul Bourquin +
  • Matthew Brett
  • Per Brodtkorb
  • Christian Brueffer
  • Lars Buitinck
  • Evgeni Burovski
  • Steven Byrnes
  • CJ Carey
  • George Castillo +
  • Alex Conley +
  • Liam Damewood +
  • Rupak Das +
  • Abraham Escalante +
  • Matthias Feurer +
  • Eric Firing +
  • Clark Fitzgerald
  • Chad Fulton
  • André Gaul
  • Andreea Georgescu +
  • Christoph Gohlke
  • Andrey Golovizin +
  • Ralf Gommers
  • J.J. Green +
  • Alex Griffing
  • Alexander Grigorievskiy +
  • Hans Moritz Gunther +
  • Jonas Hahnfeld +
  • Charles Harris
  • Ian Henriksen
  • Andreas Hilboll
  • Åsmund Hjulstad +
  • Jan Schlüter +
  • Janko Slavič +
  • Daniel Jensen +
  • Johannes Ballé +
  • Terry Jones +
  • Amato Kasahara +
  • Eric Larson
  • Denis Laxalde
  • Antony Lee
  • Gregory R. Lee
  • Perry Lee +
  • Loïc Estève
  • Martin Manns +
  • Eric Martin +
  • Matěj Kocián +
  • Andreas Mayer +
  • Nikolay Mayorov +
  • Robert McGibbon +
  • Sturla Molden
  • Nicola Montecchio +
  • Eric Moore
  • Jamie Morton +
  • Nikolas Moya +
  • Maniteja Nandana +
  • Andrew Nelson
  • Joel Nothman
  • Aldrian Obaja
  • Regina Ongowarsito +
  • Paul Ortyl +
  • Pedro López-Adeva Fernández-Layos +
  • Stefan Peterson +
  • Irvin Probst +
  • Eric Quintero +
  • John David Reaver +
  • Juha Remes +
  • Thomas Robitaille
  • Clancy Rowley +
  • Tobias Schmidt +
  • Skipper Seabold
  • Aman Singh +
  • Eric Soroos
  • Valentine Svensson +
  • Julian Taylor
  • Aman Thakral +
  • Helmut Toplitzer +
  • Fukumu Tsutsumi +
  • Anastasiia Tsyplia +
  • Jacob Vanderplas
  • Pauli Virtanen
  • Matteo Visconti +
  • Warren Weckesser
  • Florian Wilhelm +
  • Nathan Woods
  • Haochen Wu +
  • Daan Wynen +

A total of 93 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.

0.16.0 release candidate 1

04 Jul 21:25
Compare
Choose a tag to compare
Pre-release

This is the first release candidate for Scipy 0.16.0. It is a source-only release. See https://github.com/scipy/scipy/blob/maintenance/0.16.x/doc/release/0.16.0-notes.rst for the release notes.

If no new issues are reported for this release, it will become the final 0.16.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).