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

Dillon Niederhut dillon.niederhut at gmail.com
Wed Oct 25 13:32:17 EDT 2017


Woohoo!

On Wed, Oct 25, 2017, 12:10 Charles R Harris <charlesr.harris at gmail.com>
wrote:

> 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
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20171025/5fbd62b9/attachment-0001.html>


More information about the SciPy-Dev mailing list