[SciPy-Dev] [Numpy-discussion] SciPy 1.0 released!

Charles R Harris charlesr.harris at gmail.com
Wed Oct 25 13:09:14 EDT 2017


On Wed, Oct 25, 2017 at 4:14 AM, Ralf Gommers <ralf.gommers at gmail.com>
wrote:

> Hi all,
>
> We are extremely pleased to announce the release of SciPy 1.0, 16 years
> after
> version 0.1 saw the light of day.  It has been a long, productive journey
> to
> get here, and we anticipate many more exciting new features and releases
> in the
> future.
>
>
> Why 1.0 now?
> ------------
>
> A version number should reflect the maturity of a project - and SciPy was a
> mature and stable library that is heavily used in production settings for a
> long time already.  From that perspective, the 1.0 version number is long
> overdue.
>
> Some key project goals, both technical (e.g. Windows wheels and continuous
> integration) and organisational (a governance structure, code of conduct
> and a
> roadmap), have been achieved recently.
>
> Many of us are a bit perfectionist, and therefore are reluctant to call
> something "1.0" because it may imply that it's "finished" or "we are 100%
> happy
> with it".  This is normal for many open source projects, however that
> doesn't
> make it right.  We acknowledge to ourselves that it's not perfect, and
> there
> are some dusty corners left (that will probably always be the case).
> Despite
> that, SciPy is extremely useful to its users, on average has high quality
> code
> and documentation, and gives the stability and backwards compatibility
> guarantees that a 1.0 label imply.
>
>
> Some history and perspectives
> -----------------------------
>
> - 2001: the first SciPy release
> - 2005: transition to NumPy
> - 2007: creation of scikits
> - 2008: scipy.spatial module and first Cython code added
> - 2010: moving to a 6-monthly release cycle
> - 2011: SciPy development moves to GitHub
> - 2011: Python 3 support
> - 2012: adding a sparse graph module and unified optimization interface
> - 2012: removal of scipy.maxentropy
> - 2013: continuous integration with TravisCI
> - 2015: adding Cython interface for BLAS/LAPACK and a benchmark suite
> - 2017: adding a unified C API with scipy.LowLevelCallable; removal of
> scipy.weave
> - 2017: SciPy 1.0 release
>
>
> **Pauli Virtanen** is SciPy's Benevolent Dictator For Life (BDFL).  He
> says:
>
> *Truthfully speaking, we could have released a SciPy 1.0 a long time ago,
> so I'm
> happy we do it now at long last. The project has a long history, and
> during the
> years it has matured also as a software project.  I believe it has well
> proved
> its merit to warrant a version number starting with unity.*
>
> *Since its conception 15+ years ago, SciPy has largely been written by and
> for
> scientists, to provide a box of basic tools that they need. Over time, the
> set
> of people active in its development has undergone some rotation, and we
> have
> evolved towards a somewhat more systematic approach to development.
> Regardless,
> this underlying drive has stayed the same, and I think it will also
> continue
> propelling the project forward in future. This is all good, since not long
> after 1.0 comes 1.1.*
>
> **Travis Oliphant** is one of SciPy's creators.  He says:
>
> *I'm honored to write a note of congratulations to the SciPy developers
> and the
> entire SciPy community for the release of SciPy 1.0.   This release
> represents
> a dream of many that has been patiently pursued by a stalwart group of
> pioneers
> for nearly 2 decades.   Efforts have been broad and consistent over that
> time
> from many hundreds of people.   From initial discussions to efforts coding
> and
> packaging to documentation efforts to extensive conference and community
> building, the SciPy effort has been a global phenomenon that it has been a
> privilege to participate in.*
>
> *The idea of SciPy was already in multiple people’s minds in 1997 when I
> first
> joined the Python community as a young graduate student who had just
> fallen in
> love with the expressibility and extensibility of Python.   The internet
> was
> just starting to bringing together like-minded mathematicians and
> scientists in
> nascent electronically-connected communities.   In 1998, there was a
> concerted
> discussion on the matrix-SIG, python mailing list with people like Paul
> Barrett, Joe Harrington, Perry Greenfield, Paul Dubois, Konrad Hinsen,
> David
> Ascher, and others.   This discussion encouraged me in 1998 and 1999 to
> procrastinate my PhD and spend a lot of time writing extension modules to
> Python that mostly wrapped battle-tested Fortran and C-code making it
> available
> to the Python user.   This work attracted the help of others like Robert
> Kern,
> Pearu Peterson and Eric Jones who joined their efforts with mine in 2000 so
> that by 2001, the first SciPy release was ready.   This was long before
> Github
> simplified collaboration and input from others and the "patch" command and
> email was how you helped a project improve.*
>
> *Since that time, hundreds of people have spent an enormous amount of time
> improving the SciPy library and the community surrounding this library has
> dramatically grown. I stopped being able to participate actively in
> developing
> the SciPy library around 2010.  Fortunately, at that time, Pauli Virtanen
> and
> Ralf Gommers picked up the pace of development supported by dozens of
> other key
> contributors such as David Cournapeau, Evgeni Burovski, Josef Perktold, and
> Warren Weckesser.   While I have only been able to admire the development
> of
> SciPy from a distance for the past 7 years, I have never lost my love of
> the
> project and the concept of community-driven development.    I remain driven
> even now by a desire to help sustain the development of not only the SciPy
> library but many other affiliated and related open-source projects.  I am
> extremely pleased that SciPy is in the hands of a world-wide community of
> talented developers who will ensure that SciPy remains an example of how
> grass-roots, community-driven development can succeed.*
>
> **Fernando Perez** offers a wider community perspective:
>
> *The existence of a nascent Scipy library, and the incredible --if tiny by
> today's standards-- community surrounding it is what drew me into the
> scientific Python world while still a physics graduate student in 2001.
> Today,
> I am awed when I see these tools power everything from high school
> education to
> the research that led to the 2017 Nobel Prize in physics.*
>
> *Don't be fooled by the 1.0 number: this project is a mature cornerstone
> of the
> modern scientific computing ecosystem.  I am grateful for the many who have
> made it possible, and hope to be able to contribute again to it in the
> future.
> My sincere congratulations to the whole team!*
>
>
> Highlights of this release
> --------------------------
>
> Some of the highlights of this release are:
>
> - Major build improvements.  Windows wheels are available on PyPI for the
>   first time, and continuous integration has been set up on Windows and OS
> X
>   in addition to Linux.
> - A set of new ODE solvers and a unified interface to them
>   (`scipy.integrate.solve_ivp`).
> - Two new trust region optimizers and a new linear programming method, with
>   improved performance compared to what `scipy.optimize` offered
> previously.
> - Many new BLAS and LAPACK functions were wrapped.  The BLAS wrappers are
> now
>   complete.
>
>
> Upgrading and compatibility
> ---------------------------
>
> There have been a number of deprecations and API changes in this release,
> which
> are documented below.  Before upgrading, we recommend that users check that
> their own code does not use deprecated SciPy functionality (to do so, run
> your
> code with ``python -Wd`` and check for ``DeprecationWarning`` s).
>
> This release requires Python 2.7 or >=3.4 and NumPy 1.8.2 or greater.
>
> This is also the last release to support LAPACK 3.1.x - 3.3.x.  Moving the
> lowest supported LAPACK version to >3.2.x was long blocked by Apple
> Accelerate
> providing the LAPACK 3.2.1 API.  We have decided that it's time to either
> drop
> Accelerate or, if there is enough interest, provide shims for functions
> added
> in more recent LAPACK versions so it can still be used.
>
>
> New features
> ============
>
> `scipy.cluster` improvements
> ----------------------------
>
> `scipy.cluster.hierarchy.optimal_leaf_ordering`, a function to reorder a
> linkage matrix to minimize distances between adjacent leaves, was added.
>
>
> `scipy.fftpack` improvements
> ----------------------------
>
> N-dimensional versions of the discrete sine and cosine transforms and their
> inverses were added as ``dctn``, ``idctn``, ``dstn`` and ``idstn``.
>
>
> `scipy.integrate` improvements
> ------------------------------
>
> A set of new ODE solvers have been added to `scipy.integrate`.  The
> convenience
> function `scipy.integrate.solve_ivp` allows uniform access to all solvers.
> The individual solvers (``RK23``, ``RK45``, ``Radau``, ``BDF`` and
> ``LSODA``)
> can also be used directly.
>
>
> `scipy.linalg` improvements
> ----------------------------
>
> The BLAS wrappers in `scipy.linalg.blas` have been completed.  Added
> functions
> are ``*gbmv``, ``*hbmv``, ``*hpmv``, ``*hpr``, ``*hpr2``, ``*spmv``,
> ``*spr``,
> ``*tbmv``, ``*tbsv``, ``*tpmv``, ``*tpsv``, ``*trsm``, ``*trsv``,
> ``*sbmv``,
> ``*spr2``,
>
> Wrappers for the LAPACK functions ``*gels``, ``*stev``, ``*sytrd``,
> ``*hetrd``,
> ``*sytf2``, ``*hetrf``, ``*sytrf``, ``*sycon``, ``*hecon``, ``*gglse``,
> ``*stebz``, ``*stemr``, ``*sterf``, and ``*stein`` have been added.
>
> The function `scipy.linalg.subspace_angles` has been added to compute the
> subspace angles between two matrices.
>
> The function `scipy.linalg.clarkson_woodruff_transform` has been added.
> It finds low-rank matrix approximation via the Clarkson-Woodruff Transform.
>
> The functions `scipy.linalg.eigh_tridiagonal` and
> `scipy.linalg.eigvalsh_tridiagonal`, which find the eigenvalues and
> eigenvectors of tridiagonal hermitian/symmetric matrices, were added.
>
>
> `scipy.ndimage` improvements
> ----------------------------
>
> Support for homogeneous coordinate transforms has been added to
> `scipy.ndimage.affine_transform`.
>
> The ``ndimage`` C code underwent a significant refactoring, and is now
> a lot easier to understand and maintain.
>
>
> `scipy.optimize` improvements
> -----------------------------
>
> The methods ``trust-region-exact`` and ``trust-krylov`` have been added to
> the
> function `scipy.optimize.minimize`. These new trust-region methods solve
> the
> subproblem with higher accuracy at the cost of more Hessian factorizations
> (compared to dogleg) or more matrix vector products (compared to ncg) but
> usually require less nonlinear iterations and are able to deal with
> indefinite
> Hessians. They seem very competitive against the other Newton methods
> implemented in scipy.
>
> `scipy.optimize.linprog` gained an interior point method.  Its performance
> is
> superior (both in accuracy and speed) to the older simplex method.
>
>
> `scipy.signal` improvements
> ---------------------------
>
> An argument ``fs`` (sampling frequency) was added to the following
> functions:
> ``firwin``, ``firwin2``, ``firls``, and ``remez``.  This makes these
> functions
> consistent with many other functions in `scipy.signal` in which the
> sampling
> frequency can be specified.
>
> `scipy.signal.freqz` has been sped up significantly for FIR filters.
>
>
> `scipy.sparse` improvements
> ---------------------------
>
> Iterating over and slicing of CSC and CSR matrices is now faster by up to
> ~35%.
>
> The ``tocsr`` method of COO matrices is now several times faster.
>
> The ``diagonal`` method of sparse matrices now takes a parameter,
> indicating
> which diagonal to return.
>
>
> `scipy.sparse.linalg` improvements
> ----------------------------------
>
> A new iterative solver for large-scale nonsymmetric sparse linear systems,
> `scipy.sparse.linalg.gcrotmk`, was added.  It implements ``GCROT(m,k)``, a
> flexible variant of ``GCROT``.
>
> `scipy.sparse.linalg.lsmr` now accepts an initial guess, yielding
> potentially
> faster convergence.
>
> SuperLU was updated to version 5.2.1.
>
>
> `scipy.spatial` improvements
> ----------------------------
>
> Many distance metrics in `scipy.spatial.distance` gained support for
> weights.
>
> The signatures of `scipy.spatial.distance.pdist` and
> `scipy.spatial.distance.cdist` were changed to ``*args, **kwargs`` in
> order to
> support a wider range of metrics (e.g. string-based metrics that need extra
> keywords).  Also, an optional ``out`` parameter was added to ``pdist`` and
> ``cdist`` allowing the user to specify where the resulting distance matrix
> is
> to be stored
>
>
> `scipy.stats` improvements
> --------------------------
>
> The methods ``cdf`` and ``logcdf`` were added to
> `scipy.stats.multivariate_normal`, providing the cumulative distribution
> function of the multivariate normal distribution.
>
> New statistical distance functions were added, namely
> `scipy.stats.wasserstein_distance` for the first Wasserstein distance and
> `scipy.stats.energy_distance` for the energy distance.
>
>
> Deprecated features
> ===================
>
> The following functions in `scipy.misc` are deprecated: ``bytescale``,
> ``fromimage``, ``imfilter``, ``imread``, ``imresize``, ``imrotate``,
> ``imsave``, ``imshow`` and ``toimage``.  Most of those functions have
> unexpected
> behavior (like rescaling and type casting image data without the user
> asking
> for that).  Other functions simply have better alternatives.
>
> ``scipy.interpolate.interpolate_wrapper`` and all functions in that
> submodule
> are deprecated.  This was a never finished set of wrapper functions which
> is
> not relevant anymore.
>
> The ``fillvalue`` of `scipy.signal.convolve2d` will be cast directly to the
> dtypes of the input arrays in the future and checked that it is a scalar or
> an array with a single element.
>
> ``scipy.spatial.distance.matching`` is deprecated.  It is an alias of
> `scipy.spatial.distance.hamming`, which should be used instead.
>
> Implementation of `scipy.spatial.distance.wminkowski` was based on a wrong
> interpretation of the metric definition. In scipy 1.0 it has been just
> deprecated in the documentation to keep retro-compatibility but is
> recommended
> to use the new version of `scipy.spatial.distance.minkowski` that
> implements
> the correct behaviour.
>
> Positional arguments of `scipy.spatial.distance.pdist` and
> `scipy.spatial.distance.cdist` should be replaced with their keyword
> version.
>
>
> Backwards incompatible changes
> ==============================
>
> The following deprecated functions have been removed from `scipy.stats`:
> ``betai``, ``chisqprob``, ``f_value``, ``histogram``, ``histogram2``,
> ``pdf_fromgamma``, ``signaltonoise``, ``square_of_sums``, ``ss`` and
> ``threshold``.
>
> The following deprecated functions have been removed from
> `scipy.stats.mstats`:
> ``betai``, ``f_value_wilks_lambda``, ``signaltonoise`` and ``threshold``.
>
> The deprecated ``a`` and ``reta`` keywords have been removed from
> `scipy.stats.shapiro`.
>
> The deprecated functions ``sparse.csgraph.cs_graph_components`` and
> ``sparse.linalg.symeig`` have been removed from `scipy.sparse`.
>
> The following deprecated keywords have been removed in
> `scipy.sparse.linalg`:
> ``drop_tol`` from ``splu``, and ``xtype`` from ``bicg``, ``bicgstab``,
> ``cg``,
> ``cgs``, ``gmres``, ``qmr`` and ``minres``.
>
> The deprecated functions ``expm2`` and ``expm3`` have been removed from
> `scipy.linalg`.  The deprecated keyword ``q`` was removed from
> `scipy.linalg.expm`.  And the deprecated submodule ``linalg.calc_lwork``
> was
> removed.
>
> The deprecated functions ``C2K``, ``K2C``, ``F2C``, ``C2F``, ``F2K`` and
> ``K2F`` have been removed from `scipy.constants`.
>
> The deprecated ``ppform`` class was removed from `scipy.interpolate`.
>
> The deprecated keyword ``iprint`` was removed from
> `scipy.optimize.fmin_cobyla`.
>
> The default value for the ``zero_phase`` keyword of `scipy.signal.decimate`
> has been changed to True.
>
> The ``kmeans`` and ``kmeans2`` functions in `scipy.cluster.vq` changed the
> method used for random initialization, so using a fixed random seed will
> not necessarily produce the same results as in previous versions.
>
> `scipy.special.gammaln` does not accept complex arguments anymore.
>
> The deprecated functions ``sph_jn``, ``sph_yn``, ``sph_jnyn``, ``sph_in``,
> ``sph_kn``, and ``sph_inkn`` have been removed. Users should instead use
> the functions ``spherical_jn``, ``spherical_yn``, ``spherical_in``, and
> ``spherical_kn``. Be aware that the new functions have different
> signatures.
>
> The cross-class properties of `scipy.signal.lti` systems have been removed.
> The following properties/setters have been removed:
>
> Name - (accessing/setting has been removed) - (setting has been removed)
>
> * StateSpace - (``num``, ``den``, ``gain``) - (``zeros``, ``poles``)
> * TransferFunction (``A``, ``B``, ``C``, ``D``, ``gain``) - (``zeros``,
> ``poles``)
> * ZerosPolesGain (``A``, ``B``, ``C``, ``D``, ``num``, ``den``) - ()
>
> ``signal.freqz(b, a)`` with ``b`` or ``a`` >1-D raises a ``ValueError``.
> This
> was a corner case for which it was unclear that the behavior was
> well-defined.
>
> The method ``var`` of `scipy.stats.dirichlet` now returns a scalar rather
> than
> an ndarray when the length of alpha is 1.
>
>
> Other changes
> =============
>
> SciPy now has a formal governance structure.  It consists of a BDFL (Pauli
> Virtanen) and a Steering Committee.  See `the governance document
> <https://github.com/scipy/scipy/blob/master/doc/source/
> dev/governance/governance.rst>`_
> for details.
>
> It is now possible to build SciPy on Windows with MSVC + gfortran!
> Continuous
> integration has been set up for this build configuration on Appveyor,
> building
> against OpenBLAS.
>
> Continuous integration for OS X has been set up on TravisCI.
>
> The SciPy test suite has been migrated from ``nose`` to ``pytest``.
>
> ``scipy/_distributor_init.py`` was added to allow redistributors of SciPy
> to
> add custom code that needs to run when importing SciPy (e.g. checks for
> hardware, DLL search paths, etc.).
>
> Support for PEP 518 (specifying build system requirements) was added - see
> ``pyproject.toml`` in the root of the SciPy repository.
>
> In order to have consistent function names, the function
> ``scipy.linalg.solve_lyapunov`` is renamed to
> `scipy.linalg.solve_continuous_lyapunov`.  The old name is kept for
> backwards-compatibility.
>
>
> Authors
> =======
>
> * @arcady +
> * @xoviat +
> * Anton Akhmerov
> * Dominic Antonacci +
> * Alessandro Pietro Bardelli
> * Ved Basu +
> * Michael James Bedford +
> * Ray Bell +
> * Juan M. Bello-Rivas +
> * Sebastian Berg
> * Felix Berkenkamp
> * Jyotirmoy Bhattacharya +
> * Matthew Brett
> * Jonathan Bright
> * Bruno Jiménez +
> * Evgeni Burovski
> * Patrick Callier
> * Mark Campanelli +
> * CJ Carey
> * Robert Cimrman
> * Adam Cox +
> * Michael Danilov +
> * David Haberthür +
> * Andras Deak +
> * Philip DeBoer
> * Anne-Sylvie Deutsch
> * Cathy Douglass +
> * Dominic Else +
> * Guo Fei +
> * Roman Feldbauer +
> * Yu Feng
> * Jaime Fernandez del Rio
> * Orestis Floros +
> * David Freese +
> * Adam Geitgey +
> * James Gerity +
> * Dezmond Goff +
> * Christoph Gohlke
> * Ralf Gommers
> * Dirk Gorissen +
> * Matt Haberland +
> * David Hagen +
> * Charles Harris
> * Lam Yuen Hei +
> * Jean Helie +
> * Gaute Hope +
> * Guillaume Horel +
> * Franziska Horn +
> * Yevhenii Hyzyla +
> * Vladislav Iakovlev +
> * Marvin Kastner +
> * Mher Kazandjian
> * Thomas Keck
> * Adam Kurkiewicz +
> * Ronan Lamy +
> * J.L. Lanfranchi +
> * Eric Larson
> * Denis Laxalde
> * Gregory R. Lee
> * Felix Lenders +
> * Evan Limanto
> * Julian Lukwata +
> * François Magimel
> * Syrtis Major +
> * Charles Masson +
> * Nikolay Mayorov
> * Tobias Megies
> * Markus Meister +
> * Roman Mirochnik +
> * Jordi Montes +
> * Nathan Musoke +
> * Andrew Nelson
> * M.J. Nichol
> * Juan Nunez-Iglesias
> * Arno Onken +
> * Nick Papior +
> * Dima Pasechnik +
> * Ashwin Pathak +
> * Oleksandr Pavlyk +
> * Stefan Peterson
> * Ilhan Polat
> * Andrey Portnoy +
> * Ravi Kumar Prasad +
> * Aman Pratik
> * Eric Quintero
> * Vedant Rathore +
> * Tyler Reddy
> * Joscha Reimer
> * Philipp Rentzsch +
> * Antonio Horta Ribeiro
> * Ned Richards +
> * Kevin Rose +
> * Benoit Rostykus +
> * Matt Ruffalo +
> * Eli Sadoff +
> * Pim Schellart
> * Nico Schlömer +
> * Klaus Sembritzki +
> * Nikolay Shebanov +
> * Jonathan Tammo Siebert
> * Scott Sievert
> * Max Silbiger +
> * Mandeep Singh +
> * Michael Stewart +
> * Jonathan Sutton +
> * Deep Tavker +
> * Martin Thoma
> * James Tocknell +
> * Aleksandar Trifunovic +
> * Paul van Mulbregt +
> * Jacob Vanderplas
> * Aditya Vijaykumar
> * Pauli Virtanen
> * James Webber
> * Warren Weckesser
> * Eric Wieser +
> * Josh Wilson
> * Zhiqing Xiao +
> * Evgeny Zhurko
> * Nikolay Zinov +
> * Zé Vinícius +
>
> A total of 121 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.
>
>
> Cheers,
> Ralf
>
>
Congratulations to all. SciPy provides wonderful tools that are free for
all to use. That those tools are available, and easily installed, is a
great boon to many who would otherwise be at a disadvantage for lack of
money or access; that, in itself, will have a major impact.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20171025/e2afea68/attachment-0001.html>


More information about the SciPy-Dev mailing list