Releases: scipy/scipy
0.18.0 release tag for DOI
This is the same tag as v0.18.0, but re-issued to obtain a DOI.
The content and release notes can be found here: https://github.com/scipy/scipy/releases/tag/v0.18.0
Scipy 0.18.0
SciPy 0.18.0 Release Notes
SciPy 0.18.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.19.x branch, and on adding
new features on the master branch.
This release requires Python 2.7 or 3.4-3.5 and NumPy 1.7.1 or greater.
Highlights of this release include:
- - A new ODE solver for two-point boundary value problems,
scipy.optimize.solve_bvp
. - - A new class,
CubicSpline
, for cubic spline interpolation of data. - - N-dimensional tensor product polynomials,
scipy.interpolate.NdPPoly
. - - Spherical Voronoi diagrams,
scipy.spatial.SphericalVoronoi
. - - Support for discrete-time linear systems,
scipy.signal.dlti
.
New features
scipy.integrate
improvements
A solver of two-point boundary value problems for ODE systems has been
implemented in scipy.integrate.solve_bvp
. The solver allows for non-separated
boundary conditions, unknown parameters and certain singular terms. It finds
a C1 continious solution using a fourth-order collocation algorithm.
scipy.interpolate
improvements
Cubic spline interpolation is now available via scipy.interpolate.CubicSpline
.
This class represents a piecewise cubic polynomial passing through given points
and C2 continuous. It is represented in the standard polynomial basis on each
segment.
A representation of n-dimensional tensor product piecewise polynomials is
available as the scipy.interpolate.NdPPoly
class.
Univariate piecewise polynomial classes, PPoly
and Bpoly
, can now be
evaluated on periodic domains. Use extrapolate="periodic"
keyword
argument for this.
scipy.fftpack
improvements
scipy.fftpack.next_fast_len
function computes the next "regular" number for
FFTPACK. Padding the input to this length can give significant performance
increase for scipy.fftpack.fft
.
scipy.signal
improvements
Resampling using polyphase filtering has been implemented in the function
scipy.signal.resample_poly
. This method upsamples a signal, applies a
zero-phase low-pass FIR filter, and downsamples using scipy.signal.upfirdn
(which is also new in 0.18.0). This method can be faster than FFT-based
filtering provided by scipy.signal.resample
for some signals.
scipy.signal.firls
, which constructs FIR filters using least-squares error
minimization, was added.
scipy.signal.sosfiltfilt
, which does forward-backward filtering like
scipy.signal.filtfilt
but for second-order sections, was added.
Discrete-time linear systems
`scipy.signal.dlti` provides an implementation of discrete-time linear systems.
Accordingly, the `StateSpace`, `TransferFunction` and `ZerosPolesGain` classes
have learned a the new keyword, `dt`, which can be used to create discrete-time
instances of the corresponding system representation.
`scipy.sparse` improvements
- ---------------------------
The functions `sum`, `max`, `mean`, `min`, `transpose`, and `reshape` in
`scipy.sparse` have had their signatures augmented with additional arguments
and functionality so as to improve compatibility with analogously defined
functions in `numpy`.
Sparse matrices now have a `count_nonzero` method, which counts the number of
nonzero elements in the matrix. Unlike `getnnz()` and ``nnz`` propety,
which return the number of stored entries (the length of the data attribute),
this method counts the actual number of non-zero entries in data.
`scipy.optimize` improvements
- -----------------------------
The implementation of Nelder-Mead minimization,
`scipy.minimize(..., method="Nelder-Mead")`, obtained a new keyword,
`initial_simplex`, which can be used to specify the initial simplex for the
optimization process.
Initial step size selection in CG and BFGS minimizers has been improved. We
expect that this change will improve numeric stability of optimization in some
cases. See pull request gh-5536 for details.
Handling of infinite bounds in SLSQP optimization has been improved. We expect
that this change will improve numeric stability of optimization in the some
cases. See pull request gh-6024 for details.
A large suite of global optimization benchmarks has been added to
``scipy/benchmarks/go_benchmark_functions``. See pull request gh-4191 for details.
Nelder-Mead and Powell minimization will now only set defaults for
maximum iterations or function evaluations if neither limit is set by
the caller. In some cases with a slow converging function and only 1
limit set, the minimization may continue for longer than with previous
versions and so is more likely to reach convergence. See issue gh-5966.
`scipy.stats` improvements
- --------------------------
Trapezoidal distribution has been implemented as `scipy.stats.trapz`.
Skew normal distribution has been implemented as `scipy.stats.skewnorm`.
Burr type XII distribution has been implemented as `scipy.stats.burr12`.
Three- and four-parameter kappa distributions have been implemented as
`scipy.stats.kappa3` and `scipy.stats.kappa4`, respectively.
New `scipy.stats.iqr` function computes the interquartile region of a
distribution.
Random matrices
scipy.stats.special_ortho_group
and scipy.stats.ortho_group
provide
generators of random matrices in the SO(N) and O(N) groups, respectively. They
generate matrices in the Haar distribution, the only uniform distribution on
these group manifolds.
scipy.stats.random_correlation
provides a generator for random
correlation matrices, given specified eigenvalues.
scipy.linalg
improvements
scipy.linalg.svd
gained a new keyword argument, lapack_driver
. Available
drivers are gesdd
(default) and gesvd
.
scipy.linalg.lapack.ilaver
returns the version of the LAPACK library SciPy
links to.
scipy.spatial
improvements
Boolean distances, scipy.spatial.pdist
, have been sped up. Improvements vary
by the function and the input size. In many cases, one can expect a speed-up
of x2--x10.
New class scipy.spatial.SphericalVoronoi
constructs Voronoi diagrams on the
surface of a sphere. See pull request gh-5232 for details.
scipy.cluster
improvements
A new clustering algorithm, the nearest neighbor chain algorithm, has been
implemented for scipy.cluster.hierarchy.linkage
. As a result, one can expect
a significant algorithmic improvement (:math:O(N^2)
instead of :math:O(N^3)
)
for several linkage methods.
scipy.special
improvements
The new function scipy.special.loggamma
computes the principal branch of the
logarithm of the Gamma function. For real input, loggamma
is compatible
with scipy.special.gammaln
. For complex input, it has more consistent
behavior in the complex plane and should be preferred over gammaln
.
Vectorized forms of spherical Bessel functions have been implemented as
scipy.special.spherical_jn
, scipy.special.spherical_kn
,
scipy.special.spherical_in
and scipy.special.spherical_yn
.
They are recommended for use over sph_*
functions, which are now deprecated.
Several special functions have been extended to the complex domain and/or
have seen domain/stability improvements. This includes spence
, digamma
,
log1p
and several others.
Deprecated features
The cross-class properties of lti
systems have been deprecated. The
following properties/setters will raise a DeprecationWarning
:
Name - (accessing/setting raises warning) - (setting raises warning)
- StateSpace - (
num
,den
,gain
) - (zeros
,poles
) - TransferFunction (
A
,B
,C
,D
,gain
) - (zeros
,poles
) - ZerosPolesGain (
A
,B
,C
,D
,num
,den
) - ()
Spherical Bessel functions, sph_in
, sph_jn
, sph_kn
, sph_yn
,
sph_jnyn
and sph_inkn
have been deprecated in favor of
scipy.special.spherical_jn
and spherical_kn
, spherical_yn
,
spherical_in
.
The following functions in scipy.constants
are deprecated: C2K
, K2C
,
C2F
, F2C
, F2K
and K2F
. They are superceded by a new function
scipy.constants.convert_temperature
that can perform all those conversions
plus to/from the Rankine temperature scale.
Backwards incompatible changes
scipy.optimize
The convergence criterion for optimize.bisect
,
optimize.brentq
, optimize.brenth
, and optimize.ridder
now
works the same as numpy.allclose
.
scipy.ndimage
The offset in ndimage.iterpolation.affine_transform
is now consistently added after the matrix is applied,
independent of if the matrix is specified using a one-dimensional
or a two-dimensional array.
scipy.stats
stats.ks_2samp
used to return nonsensical values if the input was
not real or contained nans. It now raises an exception for such inputs.
Several deprecated methods of scipy.stats
distributions have been removed:
est_loc_scale
, vecfunc
, veccdf
and vec_generic_moment
.
Deprecated functions nanmean
, nanstd
and nanmedian
have been removed
from scipy.stats
. These functions were deprecated in scipy 0.15.0 in favor
of their numpy
equivalents.
A bug in the rvs()
method of the distributions in scipy.stats
has
been fixed. When arguments to rvs()
were given that were shaped for
broadcasting, in many cases the returned random samples were not random.
A simple example of the problem is stats.norm.rvs(loc=np.zeros(10))
.
Because of the bug, that call would return 10 identical values. The bug
only affected code that relied on the broadcasting of the shape, location
and scale parameters.
The rvs()
method also accepted some arguments that it should not have.
There is a potential for backwards incompatibility in cases where rvs()
accepted arguments that are not, in fact, compatible with broadcasting.
An example is
stats....
release candidate 2 for scipy 0.18.0
This is the second rc for scipy 0.18.0.
Please test it --- both the release itself on your machines and your code against this release --- and report breakage (hopefully, there isn't one) on Github issue tracker or scipy-dev mailing list.
If no issues are reported for this rc, it will graduate into the final release.
0.18.0 release candidate 1
This is the first release candidate for scipy 0.18.0. See https://github.com/scipy/scipy/blob/maintenance/0.18.x/doc/release/0.18.0-notes.rst for the release notes.
Please note that this is a source-only release.
If no issues are reported for this release, it will become the final 0.18.0 release. Issues can be reported via Github or on the scipy-dev mailing list (see http://scipy.org/scipylib/mailing-lists.html).
Scipy 0.17.1
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
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
andquery_ball_point
gained ann_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...
0.17.0 release candidate 2
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
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
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
SciPy 0.16.1 Release Notes
SciPy 0.16.1 is a bug-fix release with no new features compared to 0.16.0.