File: 0.11.0-notes.rst

package info (click to toggle)
python-scipy 0.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 75,464 kB
  • ctags: 79,406
  • sloc: python: 143,495; cpp: 89,357; fortran: 81,650; ansic: 79,778; makefile: 364; sh: 265
file content (316 lines) | stat: -rw-r--r-- 9,789 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
==========================
SciPy 0.11.0 Release Notes
==========================

.. contents::

SciPy 0.11.0 is the culmination of 8 months of hard work. It contains
many new features, numerous bug-fixes, improved test coverage and
better documentation.  Highlights of this release are:

  - A new module has been added which provides a number of common sparse graph
    algorithms.
  - New unified interfaces to the existing optimization and root finding
    functions have been added.

All users are encouraged to upgrade to this release, as there are a large
number of bug-fixes and optimizations.  Our development attention will now
shift to bug-fix releases on the 0.11.x branch, and on adding new features on
the master branch.

This release requires Python 2.4-2.7 or 3.1-3.2 and NumPy 1.5.1 or greater.


New features
============

Sparse Graph Submodule
----------------------
The new submodule :mod:`scipy.sparse.csgraph` implements a number of efficient
graph algorithms for graphs stored as sparse adjacency matrices.  Available
routines are:

   - :func:`connected_components` - determine connected components of a graph
   - :func:`laplacian` - compute the laplacian of a graph
   - :func:`shortest_path` - compute the shortest path between points on a
     positive graph
   - :func:`dijkstra` - use Dijkstra's algorithm for shortest path
   - :func:`floyd_warshall` - use the Floyd-Warshall algorithm for
     shortest path
   - :func:`breadth_first_order` - compute a breadth-first order of nodes
   - :func:`depth_first_order` - compute a depth-first order of nodes
   - :func:`breadth_first_tree` - construct the breadth-first tree from
     a given node
   - :func:`depth_first_tree` - construct a depth-first tree from a given node
   - :func:`minimum_spanning_tree` - construct the minimum spanning
     tree of a graph


``scipy.optimize`` improvements
-------------------------------

The optimize module has received a lot of attention this release.  In addition
to added tests, documentation improvements, bug fixes and code clean-up, the
following improvements were made:

- A unified interface to minimizers of univariate and multivariate
  functions has been added.
- A unified interface to root finding algorithms for multivariate functions
  has been added.
- The L-BFGS-B algorithm has been updated to version 3.0.


Unified interfaces to minimizers
````````````````````````````````

Two new functions ``scipy.optimize.minimize`` and
``scipy.optimize.minimize_scalar`` were added to provide a common interface
to minimizers of multivariate and univariate functions respectively.
For multivariate functions, ``scipy.optimize.minimize`` provides an
interface to methods for unconstrained optimization (`fmin`, `fmin_powell`,
`fmin_cg`, `fmin_ncg`, `fmin_bfgs` and `anneal`) or constrained
optimization (`fmin_l_bfgs_b`, `fmin_tnc`, `fmin_cobyla` and `fmin_slsqp`).
For univariate functions, ``scipy.optimize.minimize_scalar`` provides an
interface to methods for unconstrained and bounded optimization (`brent`,
`golden`, `fminbound`).
This allows for easier comparing and switching between solvers.

Unified interface to root finding algorithms
````````````````````````````````````````````

The new function ``scipy.optimize.root`` provides a common interface to
root finding algorithms for multivariate functions, embedding `fsolve`,
`leastsq` and `nonlin` solvers.


``scipy.linalg`` improvements
-----------------------------

New matrix equation solvers
```````````````````````````

Solvers for the Sylvester equation (``scipy.linalg.solve_sylvester``, discrete
and continuous Lyapunov equations (``scipy.linalg.solve_lyapunov``,
``scipy.linalg.solve_discrete_lyapunov``) and discrete and continuous algebraic
Riccati equations (``scipy.linalg.solve_continuous_are``,
``scipy.linalg.solve_discrete_are``) have been added to ``scipy.linalg``.
These solvers are often used in the field of linear control theory.

QZ and QR Decomposition
````````````````````````

It is now possible to calculate the QZ, or Generalized Schur, decomposition
using ``scipy.linalg.qz``. This function wraps the LAPACK routines sgges,
dgges, cgges, and zgges.

The function ``scipy.linalg.qr_multiply``, which allows efficient computation
of the matrix product of Q (from a QR decomposition) and a vector, has been
added.

Pascal matrices
```````````````

A function for creating Pascal matrices, ``scipy.linalg.pascal``, was added.


Sparse matrix construction and operations
-----------------------------------------

Two new functions, ``scipy.sparse.diags`` and ``scipy.sparse.block_diag``, were
added to easily construct diagonal and block-diagonal sparse matrices
respectively.

``scipy.sparse.csc_matrix`` and ``csr_matrix`` now support the operations
``sin``, ``tan``, ``arcsin``, ``arctan``, ``sinh``, ``tanh``, ``arcsinh``,
``arctanh``, ``rint``, ``sign``, ``expm1``, ``log1p``, ``deg2rad``, ``rad2deg``,
``floor``, ``ceil`` and ``trunc``.  Previously, these operations had to be
performed by operating on the matrices' ``data`` attribute.


LSMR iterative solver
---------------------

LSMR, an iterative method for solving (sparse) linear and linear
least-squares systems, was added as ``scipy.sparse.linalg.lsmr``.


Discrete Sine Transform
-----------------------

Bindings for the discrete sine transform functions have been added to
``scipy.fftpack``.


``scipy.interpolate`` improvements
----------------------------------

For interpolation in spherical coordinates, the three classes
``scipy.interpolate.SmoothSphereBivariateSpline``,
``scipy.interpolate.LSQSphereBivariateSpline``, and
``scipy.interpolate.RectSphereBivariateSpline`` have been added.


Binned statistics (``scipy.stats``)
-----------------------------------

The stats module has gained functions to do binned statistics, which are a
generalization of histograms, in 1-D, 2-D and multiple dimensions:
``scipy.stats.binned_statistic``, ``scipy.stats.binned_statistic_2d`` and 
``scipy.stats.binned_statistic_dd``.


Deprecated features
===================

``scipy.sparse.cs_graph_components`` has been made a part of the sparse graph
submodule, and renamed to ``scipy.sparse.csgraph.connected_components``.
Calling the former routine will result in a deprecation warning.

``scipy.misc.radon`` has been deprecated.  A more full-featured radon transform
can be found in scikits-image.

``scipy.io.save_as_module`` has been deprecated.  A better way to save multiple
Numpy arrays is the ``numpy.savez`` function.

The `xa` and `xb` parameters for all distributions in
``scipy.stats.distributions`` already weren't used; they have now been
deprecated.


Backwards incompatible changes
==============================

Removal of ``scipy.maxentropy``
-------------------------------

The ``scipy.maxentropy`` module, which was deprecated in the 0.10.0 release,
has been removed.  Logistic regression in scikits.learn is a good and modern
alternative for this functionality.


Minor change in behavior of ``splev``
-------------------------------------

The spline evaluation function now behaves similarly to ``interp1d``
for size-1 arrays.  Previous behavior::

    >>> from scipy.interpolate import splev, splrep, interp1d
    >>> x = [1,2,3,4,5]
    >>> y = [4,5,6,7,8]
    >>> tck = splrep(x, y)
    >>> splev([1], tck)
    4.
    >>> splev(1, tck)
    4.

Corrected behavior::

    >>> splev([1], tck)
    array([ 4.])
    >>> splev(1, tck)
    array(4.)

This affects also the ``UnivariateSpline`` classes.


Behavior of ``scipy.integrate.complex_ode``
-------------------------------------------

The behavior of the ``y`` attribute of ``complex_ode`` is changed.
Previously, it expressed the complex-valued solution in the form::

    z = ode.y[::2] + 1j * ode.y[1::2]

Now, it is directly the complex-valued solution::

    z = ode.y


Minor change in behavior of T-tests
-----------------------------------

The T-tests ``scipy.stats.ttest_ind``, ``scipy.stats.ttest_rel`` and
``scipy.stats.ttest_1samp`` have been changed so that 0 / 0 now returns NaN
instead of 1.


Other changes
=============

The SuperLU sources in ``scipy.sparse.linalg`` have been updated to version 4.3
from upstream.

The function ``scipy.signal.bode``, which calculates magnitude and phase data
for a continuous-time system, has been added.

The two-sample T-test ``scipy.stats.ttest_ind`` gained an option to compare
samples with unequal variances, i.e. Welch's T-test.

``scipy.misc.logsumexp`` now takes an optional ``axis`` keyword argument.


Authors
=======

This release contains work by the following people (contributed at least
one patch to this release, names in alphabetical order):

* Jeff Armstrong
* Chad Baker
* Brandon Beacher +
* behrisch +
* borishim +
* Matthew Brett
* Lars Buitinck
* Luis Pedro Coelho +
* Johann Cohen-Tanugi
* David Cournapeau
* dougal +
* Ali Ebrahim +
* endolith +
* Bjørn Forsman +
* Robert Gantner +
* Sebastian Gassner +
* Christoph Gohlke
* Ralf Gommers
* Yaroslav Halchenko
* Charles Harris
* Jonathan Helmus +
* Andreas Hilboll +
* Marc Honnorat +
* Jonathan Hunt +
* Maxim Ivanov +
* Thouis (Ray) Jones
* Christopher Kuster +
* Josh Lawrence +
* Denis Laxalde +
* Travis Oliphant
* Joonas Paalasmaa +
* Fabian Pedregosa
* Josef Perktold
* Gavin Price +
* Jim Radford +
* Andrew Schein +
* Skipper Seabold
* Jacob Silterra +
* Scott Sinclair
* Alexis Tabary +
* Martin Teichmann
* Matt Terry +
* Nicky van Foreest +
* Jacob Vanderplas
* Patrick Varilly +
* Pauli Virtanen
* Nils Wagner +
* Darryl Wally +
* Stefan van der Walt
* Liming Wang +
* David Warde-Farley +
* Warren Weckesser
* Sebastian Werk +
* Mike Wimmer +
* Tony S Yu +

A total of 55 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.