Changelog
### 1.7.0
```
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. 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).
Our development attention will now shift to bug-fix releases on the
1.7.x branch, and on adding new features on the master branch.
This release requires Python `3.7+` and NumPy `1.16.5` or greater.
For running on PyPy, PyPy3 `6.0+` is required.
Highlights of this release
- A new submodule for quasi-Monte Carlo, `scipy.stats.qmc`, was added
- The documentation design was updated to use the same PyData-Sphinx theme as
other NumFOCUS packages like NumPy.
- We now vendor and leverage the Boost C++ library to enable numerous
improvements for long-standing weaknesses in `scipy.stats`
- `scipy.stats` has six new distributions, eight new (or overhauled)
hypothesis tests, a new function for bootstrapping, a class that enables
fast random variate sampling and percentile point function evaluation,
and many other enhancements.
- ``cdist`` and ``pdist`` distance calculations are faster for several metrics,
especially weighted cases, thanks to a rewrite to a new C++ backend framework
- A new class for radial basis function interpolation, `RBFInterpolator`, was
added to address issues with the `Rbf` class.
*We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source
Software for Science program for supporting many of the improvements to*
`scipy.stats`.
New features
`scipy.cluster` improvements
An optional argument, ``seed``, has been added to ``kmeans`` and ``kmeans2`` to
set the random generator and random state.
`scipy.interpolate` improvements
Improved input validation and error messages for ``fitpack.bispev`` and
``fitpack.parder`` for scenarios that previously caused substantial confusion
for users.
The class `RBFInterpolator` was added to supersede the `Rbf` class. The new
class has usage that more closely follows other interpolator classes, corrects
sign errors that caused unexpected smoothing behavior, includes polynomial
terms in the interpolant (which are necessary for some RBF choices), and
supports interpolation using only the k-nearest neighbors for memory
efficiency.
`scipy.linalg` improvements
An LAPACK wrapper was added for access to the ``tgexc`` subroutine.
`scipy.ndimage` improvements
`scipy.ndimage.affine_transform` is now able to infer the ``output_shape`` from
the ``out`` array.
`scipy.optimize` improvements
The optional parameter ``bounds`` was added to
``_minimize_neldermead`` to support bounds constraints
for the Nelder-Mead solver.
``trustregion`` methods ``trust-krylov``, ``dogleg`` and ``trust-ncg`` can now
estimate ``hess`` by finite difference using one of
``["2-point", "3-point", "cs"]``.
``halton`` was added as a ``sampling_method`` in `scipy.optimize.shgo`.
``sobol`` was fixed and is now using `scipy.stats.qmc.Sobol`.
``halton`` and ``sobol`` were added as ``init`` methods in
`scipy.optimize.differential_evolution.`
``differential_evolution`` now accepts an ``x0`` parameter to provide an
initial guess for the minimization.
``least_squares`` has a modest performance improvement when SciPy is built
with Pythran transpiler enabled.
When ``linprog`` is used with ``method`` ``'highs'``, ``'highs-ipm'``, or
``'highs-ds'``, the result object now reports the marginals (AKA shadow
prices, dual values) and residuals associated with each constraint.
`scipy.signal` improvements
``get_window`` supports ``general_cosine`` and ``general_hamming`` window
functions.
`scipy.signal.medfilt2d` now releases the GIL where appropriate to enable
performance gains via multithreaded calculations.
`scipy.sparse` improvements
Addition of ``dia_matrix`` sparse matrices is now faster.
`scipy.spatial` improvements
``distance.cdist`` and ``distance.pdist`` performance has greatly improved for
certain weighted metrics. Namely: ``minkowski``, ``euclidean``, ``chebyshev``,
``canberra``, and ``cityblock``.
Modest performance improvements for many of the unweighted ``cdist`` and
``pdist`` metrics noted above.
The parameter ``seed`` was added to `scipy.spatial.vq.kmeans` and
`scipy.spatial.vq.kmeans2`.
The parameters ``axis`` and ``keepdims`` where added to
`scipy.spatial.distance.jensenshannon`.
The ``rotation`` methods ``from_rotvec`` and ``as_rotvec`` now accept a
``degrees`` argument to specify usage of degrees instead of radians.
`scipy.special` improvements
Wright's generalized Bessel function for positive arguments was added as
`scipy.special.wright_bessel.`
An implementation of the inverse of the Log CDF of the Normal Distribution is
now available via `scipy.special.ndtri_exp`.
`scipy.stats` improvements
Hypothesis Tests
The Mann-Whitney-Wilcoxon test, ``mannwhitneyu``, has been rewritten. It now
supports n-dimensional input, an exact test method when there are no ties,
and improved documentation. Please see "Other changes" for adjustments to
default behavior.
The new function `scipy.stats.binomtest` replaces `scipy.stats.binom_test`. The
new function returns an object that calculates a confidence intervals of the
proportion parameter. Also, performance was improved from O(n) to O(log(n)) by
using binary search.
The two-sample version of the Cramer-von Mises test is implemented in
`scipy.stats.cramervonmises_2samp`.
The Alexander-Govern test is implemented in the new function
`scipy.stats.alexandergovern`.
The new functions `scipy.stats.barnard_exact` and `scipy.stats. boschloo_exact`
respectively perform Barnard's exact test and Boschloo's exact test
for 2x2 contingency tables.
The new function `scipy.stats.page_trend_test` performs Page's test for ordered
alternatives.
The new function `scipy.stats.somersd` performs Somers' D test for ordinal
association between two variables.
An option, ``permutations``, has been added in `scipy.stats.ttest_ind` to
perform permutation t-tests. A ``trim`` option was also added to perform
a trimmed (Yuen's) t-test.
The ``alternative`` parameter was added to the ``skewtest``, ``kurtosistest``,
``ranksums``, ``mood``, ``ansari``, ``linregress``, and ``spearmanr`` functions
to allow one-sided hypothesis testing.
Sample statistics
The new function `scipy.stats.differential_entropy` estimates the differential
entropy of a continuous distribution from a sample.
The ``boxcox`` and ``boxcox_normmax`` now allow the user to control the
optimizer used to minimize the negative log-likelihood function.
A new function `scipy.stats.contingency.relative_risk` calculates the
relative risk, or risk ratio, of a 2x2 contingency table. The object
returned has a method to compute the confidence interval of the relative risk.
Performance improvements in the ``skew`` and ``kurtosis`` functions achieved
by removal of repeated/redundant calculations.
Substantial performance improvements in `scipy.stats.mstats.hdquantiles_sd`.
The new function `scipy.stats.contingency.association` computes several
measures of association for a contingency table: Pearsons contingency
coefficient, Cramer's V, and Tschuprow's T.
The parameter ``nan_policy`` was added to `scipy.stats.zmap` to provide options
for handling the occurrence of ``nan`` in the input data.
The parameter ``ddof`` was added to `scipy.stats.variation` and
`scipy.stats.mstats.variation`.
The parameter ``weights`` was added to `scipy.stats.gmean`.
Statistical Distributions
We now vendor and leverage the Boost C++ library to address a number of
previously reported issues in ``stats``. Notably, ``beta``, ``binom``,
``nbinom`` now have Boost backends, and it is straightforward to leverage
the backend for additional functions.
The skew Cauchy probability distribution has been implemented as
`scipy.stats.skewcauchy`.
The Zipfian probability distribution has been implemented as
`scipy.stats.zipfian`.
The new distributions ``nchypergeom_fisher`` and ``nchypergeom_wallenius``
implement the Fisher and Wallenius versions of the noncentral hypergeometric
distribution, respectively.
The generalized hyperbolic distribution was added in
`scipy.stats.genhyperbolic`.
The studentized range distribution was added in `scipy.stats.studentized_range`.
`scipy.stats.argus` now has improved handling for small parameter values.
Better argument handling/preparation has resulted in performance improvements
for many distributions.
The ``cosine`` distribution has added ufuncs for ``ppf``, ``cdf``, ``sf``, and
``isf`` methods including numerical precision improvements at the edges of the
support of the distribution.
An option to fit the distribution to data by the method of moments has been
added to the ``fit`` method of the univariate continuous distributions.
Other
`scipy.stats.bootstrap` has been added to allow estimation of the confidence
interval and standard error of a statistic.
The new function `scipy.stats.contingency.crosstab` computes a contingency
table (i.e. a table of counts of unique entries) for the given data.
`scipy.stats.NumericalInverseHermite` enables fast random variate sampling
and percentile point function evaluation of an arbitrary univariate statistical
distribution.
New `scipy.stats.qmc` module
This new module provides Quasi-Monte Carlo (QMC) generators and associated
helper functions.
It provides a generic class `scipy.stats.qmc.QMCEngine` which defines a QMC
engine/sampler. An engine is state aware: it can be continued, advanced and
reset. 3 base samplers are available:
- `scipy.stats.qmc.Sobol` the well known Sobol low discrepancy sequence.
Several warnings have been added to guide the user into properly using this
sampler. The sequence is scrambled by default.
- `scipy.stats.qmc.Halton`: Halton low discrepancy sequence. The sequence is
scrambled by default.
- `scipy.stats.qmc.LatinHypercube`: plain LHS design.
And 2 special samplers are available:
- `scipy.stats.qmc.MultinomialQMC`: sampling from a multinomial distribution
using any of the base `scipy.stats.qmc.QMCEngine`.
- `scipy.stats.qmc.MultivariateNormalQMC`: sampling from a multivariate Normal
using any of the base `scipy.stats.qmc.QMCEngine`.
The module also provide the following helpers:
- `scipy.stats.qmc.discrepancy`: assess the quality of a set of points in terms
of space coverage.
- `scipy.stats.qmc.update_discrepancy`: can be used in an optimization loop to
construct a good set of points.
- `scipy.stats.qmc.scale`: easily scale a set of points from (to) the unit
interval to (from) a given range.
Deprecated features
`scipy.linalg` deprecations
- `scipy.linalg.pinv2` is deprecated and its functionality is completely
subsumed into `scipy.linalg.pinv`
- Both ``rcond``, ``cond`` keywords of `scipy.linalg.pinv` and
`scipy.linalg.pinvh` were not working and now are deprecated. They are now
replaced with functioning ``atol`` and ``rtol`` keywords with clear usage.
`scipy.spatial` deprecations
- `scipy.spatial.distance` metrics expect 1d input vectors but will call
``np.squeeze`` on their inputs to accept any extra length-1 dimensions. That
behaviour is now deprecated.
Backwards incompatible changes
Other changes
We now accept and leverage performance improvements from the ahead-of-time
Python-to-C++ transpiler, Pythran, which can be optionally disabled (via
``export SCIPY_USE_PYTHRAN=0``) but is enabled by default at build time.
There are two changes to the default behavior of `scipy.stats.mannwhitenyu`:
- For years, use of the default ``alternative=None`` was deprecated; explicit
``alternative`` specification was required. Use of the new default value of
``alternative``, "two-sided", is now permitted.
- Previously, all p-values were based on an asymptotic approximation. Now, for
small samples without ties, the p-values returned are exact by default.
Support has been added for PEP 621 (project metadata in ``pyproject.toml``)
We now support a Gitpod environment to reduce the barrier to entry for SciPy
development; for more details see `quickstart-gitpod`.
Authors
* endolith
* Jelle Aalbers +
* Adam +
* Tania Allard +
* Sven Baars +
* Max Balandat +
* baumgarc +
* Christoph Baumgarten
* Peter Bell
* Lilian Besson
* Robinson Besson +
* Max Bolingbroke
* Blair Bonnett +
* Jordão Bragantini
* Harm Buisman +
* Evgeni Burovski
* Matthias Bussonnier
* Dominic C
* CJ Carey
* Ramón Casero +
* Chachay +
* charlotte12l +
* Benjamin Curtice Corbett +
* Falcon Dai +
* Ian Dall +
* Terry Davis
* droussea2001 +
* DWesl +
* dwight200 +
* Thomas J. Fan +
* Joseph Fox-Rabinovitz
* Max Frei +
* Laura Gutierrez Funderburk +
* gbonomib +
* Matthias Geier +
* Pradipta Ghosh +
* Ralf Gommers
* Evan H +
* h-vetinari
* Matt Haberland
* Anselm Hahn +
* Alex Henrie
* Piet Hessenius +
* Trever Hines +
* Elisha Hollander +
* Stephan Hoyer
* Tom Hu +
* Kei Ishikawa +
* Julien Jerphanion
* Robert Kern
* Shashank KS +
* Peter Mahler Larsen
* Eric Larson
* Cheng H. Lee +
* Gregory R. Lee
* Jean-Benoist Leger +
* lgfunderburk +
* liam-o-marsh +
* Xingyu Liu +
* Alex Loftus +
* Christian Lorentzen +
* Cong Ma
* Marc +
* MarkPundurs +
* Markus Löning +
* Liam Marsh +
* Nicholas McKibben
* melissawm +
* Jamie Morton
* Andrew Nelson
* Nikola Forró
* Tor Nordam +
* Olivier Gauthé +
* Rohit Pandey +
* Avanindra Kumar Pandeya +
* Tirth Patel
* paugier +
* Alex H. Wagner, PhD +
* Jeff Plourde +
* Ilhan Polat
* pranavrajpal +
* Vladyslav Rachek
* Bharat Raghunathan
* Recursing +
* Tyler Reddy
* Lucas Roberts
* Gregor Robinson +
* Pamphile Roy +
* Atsushi Sakai
* Benjamin Santos
* Martin K. Scherer +
* Thomas Schmelzer +
* Daniel Scott +
* Sebastian Wallkötter +
* serge-sans-paille +
* Namami Shanker +
* Masashi Shibata +
* Alexandre de Siqueira +
* Albert Steppi +
* Adam J. Stewart +
* Kai Striega
* Diana Sukhoverkhova
* Søren Fuglede Jørgensen
* Mike Taves
* Dan Temkin +
* Nicolas Tessore +
* tsubota20 +
* Robert Uhl
* christos val +
* Bas van Beek +
* Ashutosh Varma +
* Jose Vazquez +
* Sebastiano Vigna
* Aditya Vijaykumar
* VNMabus
* Arthur Volant +
* Samuel Wallan
* Stefan van der Walt
* Warren Weckesser
* Anreas Weh
* Josh Wilson
* Rory Yorke
* Egor Zemlyanoy
* Marc Zoeller +
* zoj613 +
* 秋纫 +
A total of 126 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.
```
### 1.6.3
```
compared to `1.6.2`.
Authors
======
* Peter Bell
* Ralf Gommers
* Matt Haberland
* Peter Mahler Larsen
* Tirth Patel
* Tyler Reddy
* Pamphile ROY +
* Xingyu Liu +
A total of 8 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.
```
### 1.6.2
```
compared to `1.6.1`. This is also the first SciPy release
to place upper bounds on some dependencies to improve
the long-term repeatability of source builds.
Authors
=======
* Pradipta Ghosh +
* Tyler Reddy
* Ralf Gommers
* Martin K. Scherer +
* Robert Uhl
* Warren Weckesser
A total of 6 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.
```
### 1.6.1
```
compared to `1.6.0`.
Please note that for SciPy wheels to correctly install with pip on
macOS 11, pip `>= 20.3.3` is needed.
Authors
=======
* Peter Bell
* Evgeni Burovski
* CJ Carey
* Ralf Gommers
* Peter Mahler Larsen
* Cheng H. Lee +
* Cong Ma
* Nicholas McKibben
* Nikola Forró
* Tyler Reddy
* Warren Weckesser
A total of 11 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.
```
### 1.6.0
```
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. 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).
Our development attention will now shift to bug-fix releases on the
1.6.x branch, and on adding new features on the master branch.
This release requires Python `3.7`+ and NumPy `1.16.5` or greater.
For running on PyPy, PyPy3 `6.0`+ is required.
Highlights of this release
----------------------------
- `scipy.ndimage` improvements: Fixes and ehancements to boundary extension
modes for interpolation functions. Support for complex-valued inputs in many
filtering and interpolation functions. New ``grid_mode`` option for
`scipy.ndimage.zoom` to enable results consistent with scikit-image's
``rescale``.
- `scipy.optimize.linprog` has fast, new methods for large, sparse problems
from the ``HiGHS`` library.
- `scipy.stats` improvements including new distributions, a new test, and
enhancements to existing distributions and tests
New features
============
`scipy.special` improvements
-----------------------------
`scipy.special` now has improved support for 64-bit ``LAPACK`` backend
`scipy.odr` improvements
-------------------------
`scipy.odr` now has support for 64-bit integer ``BLAS``
`scipy.odr.ODR` has gained an optional ``overwrite`` argument so that existing
files may be overwritten.
`scipy.integrate` improvements
-------------------------------
Some renames of functions with poor names were done, with the old names
retained without being in the reference guide for backwards compatibility
reasons:
- ``integrate.simps`` was renamed to ``integrate.simpson``
- ``integrate.trapz`` was renamed to ``integrate.trapezoid``
- ``integrate.cumtrapz`` was renamed to ``integrate.cumulative_trapezoid``
`scipy.cluster` improvements
-------------------------------
`scipy.cluster.hierarchy.DisjointSet` has been added for incremental
connectivity queries.
`scipy.cluster.hierarchy.dendrogram` return value now also includes leaf color
information in `leaves_color_list`.
`scipy.interpolate` improvements
---------------------------------
`scipy.interpolate.interp1d` has a new method ``nearest-up``, similar to the
existing method ``nearest`` but rounds half-integers up instead of down.
`scipy.io` improvements
------------------------
Support has been added for reading arbitrary bit depth integer PCM WAV files
from 1- to 32-bit, including the commonly-requested 24-bit depth.
`scipy.linalg` improvements
----------------------------
The new function `scipy.linalg.matmul_toeplitz` uses the FFT to compute the
product of a Toeplitz matrix with another matrix.
`scipy.linalg.sqrtm` and `scipy.linalg.logm` have performance improvements
thanks to additional Cython code.
Python ``LAPACK`` wrappers have been added for ``pptrf``, ``pptrs``, ``ppsv``,
``pptri``, and ``ppcon``.
`scipy.linalg.norm` and the ``svd`` family of functions will now use 64-bit
integer backends when available.
`scipy.ndimage` improvements
-----------------------------
`scipy.ndimage.convolve`, `scipy.ndimage.correlate` and their 1d counterparts
now accept both complex-valued images and/or complex-valued filter kernels. All
convolution-based filters also now accept complex-valued inputs
(e.g. ``gaussian_filter``, ``uniform_filter``, etc.).
Multiple fixes and enhancements to boundary handling were introduced to
`scipy.ndimage` interpolation functions (i.e. ``affine_transform``,
``geometric_transform``, ``map_coordinates``, ``rotate``, ``shift``, ``zoom``).
A new boundary mode, ``grid-wrap`` was added which wraps images periodically,
using a period equal to the shape of the input image grid. This is in contrast
to the existing ``wrap`` mode which uses a period that is one sample smaller
than the original signal extent along each dimension.
A long-standing bug in the ``reflect`` boundary condition has been fixed and
the mode ``grid-mirror`` was introduced as a synonym for ``reflect``.
A new boundary mode, ``grid-constant`` is now available. This is similar to
the existing ndimage ``constant`` mode, but interpolation will still performed
at coordinate values outside of the original image extent. This
``grid-constant`` mode is consistent with OpenCV's ``BORDER_CONSTANT`` mode
and scikit-image's ``constant`` mode.
Spline pre-filtering (used internally by ``ndimage`` interpolation functions
when ``order >= 2``), now supports all boundary modes rather than always
defaulting to mirror boundary conditions. The standalone functions
``spline_filter`` and ``spline_filter1d`` have analytical boundary conditions
that match modes ``mirror``, ``grid-wrap`` and ``reflect``.
`scipy.ndimage` interpolation functions now accept complex-valued inputs. In
this case, the interpolation is applied independently to the real and
imaginary components.
The ``ndimage`` tutorials
(https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been
updated with new figures to better clarify the exact behavior of all of the
interpolation boundary modes.
`scipy.ndimage.zoom` now has a ``grid_mode`` option that changes the coordinate
of the center of the first pixel along an axis from 0 to 0.5. This allows
resizing in a manner that is consistent with the behavior of scikit-image's
``resize`` and ``rescale`` functions (and OpenCV's ``cv2.resize``).
`scipy.optimize` improvements
------------------------------
`scipy.optimize.linprog` has fast, new methods for large, sparse problems from
the ``HiGHS`` C++ library. ``method='highs-ds'`` uses a high performance dual
revised simplex implementation (HSOL), ``method='highs-ipm'`` uses an
interior-point method with crossover, and ``method='highs'`` chooses between
the two automatically. These methods are typically much faster and often exceed
the accuracy of other ``linprog`` methods, so we recommend explicitly
specifying one of these three method values when using ``linprog``.
`scipy.optimize.quadratic_assignment` has been added for approximate solution
of the quadratic assignment problem.
`scipy.optimize.linear_sum_assignment` now has a substantially reduced overhead
for small cost matrix sizes
`scipy.optimize.least_squares` has improved performance when the user provides
the jacobian as a sparse jacobian already in ``csr_matrix`` format
`scipy.optimize.linprog` now has an ``rr_method`` argument for specification
of the method used for redundancy handling, and a new method for this purpose
is available based on the interpolative decomposition approach.
`scipy.signal` improvements
----------------------------
`scipy.signal.gammatone` has been added to design FIR or IIR filters that
model the human auditory system.
`scipy.signal.iircomb` has been added to design IIR peaking/notching comb
filters that can boost/attenuate a frequency from a signal.
`scipy.signal.sosfilt` performance has been improved to avoid some previously-
observed slowdowns
`scipy.signal.windows.taylor` has been added--the Taylor window function is
commonly used in radar digital signal processing
`scipy.signal.gauss_spline` now supports ``list`` type input for consistency
with other related SciPy functions
`scipy.signal.correlation_lags` has been added to allow calculation of the lag/
displacement indices array for 1D cross-correlation.
`scipy.sparse` improvements
----------------------------
A solver for the minimum weight full matching problem for bipartite graphs,
also known as the linear assignment problem, has been added in
`scipy.sparse.csgraph.min_weight_full_bipartite_matching`. In particular, this
provides functionality analogous to that of
`scipy.optimize.linear_sum_assignment`, but with improved performance for sparse
inputs, and the ability to handle inputs whose dense representations would not
fit in memory.
The time complexity of `scipy.sparse.block_diag` has been improved dramatically
from quadratic to linear.
`scipy.sparse.linalg` improvements
-----------------------------------
The vendored version of ``SuperLU`` has been updated
`scipy.fft` improvements
-------------------------
The vendored ``pocketfft`` library now supports compiling with ARM neon vector
extensions and has improved thread pool behavior.
`scipy.spatial` improvements
-----------------------------
The python implementation of ``KDTree`` has been dropped and ``KDTree`` is now
implemented in terms of ``cKDTree``. You can now expect ``cKDTree``-like
performance by default. This also means ``sys.setrecursionlimit`` no longer
needs to be increased for querying large trees.
``transform.Rotation`` has been updated with support for Modified Rodrigues
Parameters alongside the existing rotation representations (PR gh-12667).
`scipy.spatial.transform.Rotation` has been partially cythonized, with some
performance improvements observed
`scipy.spatial.distance.cdist` has improved performance with the ``minkowski``
metric, especially for p-norm values of 1 or 2.
`scipy.stats` improvements
---------------------------
New distributions have been added to `scipy.stats`:
- The asymmetric Laplace continuous distribution has been added as
`scipy.stats.laplace_asymmetric`.
- The negative hypergeometric distribution has been added as `scipy.stats.nhypergeom`.
- The multivariate t distribution has been added as `scipy.stats.multivariate_t`.
- The multivariate hypergeometric distribution has been added as `scipy.stats.multivariate_hypergeom`.
The ``fit`` method has been overridden for several distributions (``laplace``,
``pareto``, ``rayleigh``, ``invgauss``, ``logistic``, ``gumbel_l``,
``gumbel_r``); they now use analytical, distribution-specific maximum
likelihood estimation results for greater speed and accuracy than the generic
(numerical optimization) implementation.
The one-sample Cramér-von Mises test has been added as
`scipy.stats.cramervonmises`.
An option to compute one-sided p-values was added to `scipy.stats.ttest_1samp`,
`scipy.stats.ttest_ind_from_stats`, `scipy.stats.ttest_ind` and
`scipy.stats.ttest_rel`.
The function `scipy.stats.kendalltau` now has an option to compute Kendall's
tau-c (also known as Stuart's tau-c), and support has been added for exact
p-value calculations for sample sizes ``> 171``.
`stats.trapz` was renamed to `stats.trapezoid`, with the former name retained
as an alias for backwards compatibility reasons.
The function `scipy.stats.linregress` now includes the standard error of the
intercept in its return value.
The ``_logpdf``, ``_sf``, and ``_isf`` methods have been added to
`scipy.stats.nakagami`; ``_sf`` and ``_isf`` methods also added to
`scipy.stats.gumbel_r`
The ``sf`` method has been added to `scipy.stats.levy` and `scipy.stats.levy_l`
for improved precision.
`scipy.stats.binned_statistic_dd` performance improvements for the following
computed statistics: ``max``, ``min``, ``median``, and ``std``.
We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source
Software for Science program for supporting many of these improvements to
`scipy.stats`.
Deprecated features
===================
`scipy.spatial` changes
------------------------
Calling ``KDTree.query`` with ``k=None`` to find all neighbours is deprecated.
Use ``KDTree.query_ball_point`` instead.
``distance.wminkowski`` was deprecated; use ``distance.minkowski`` and supply
weights with the ``w`` keyword instead.
Backwards incompatible changes
==============================
`scipy` changes
----------------
Using `scipy.fft` as a function aliasing ``numpy.fft.fft`` was removed after
being deprecated in SciPy ``1.4.0``. As a result, the `scipy.fft` submodule
must be explicitly imported now, in line with other SciPy subpackages.
`scipy.signal` changes
-----------------------
The output of ``decimate``, ``lfilter_zi``, ``lfiltic``, ``sos2tf``, and
``sosfilt_zi`` have been changed to match ``numpy.result_type`` of their inputs.
The window function ``slepian`` was removed. It had been deprecated since SciPy
``1.1``.
`scipy.spatial` changes
------------------------
``cKDTree.query`` now returns 64-bit rather than 32-bit integers on Windows,
making behaviour consistent between platforms (PR gh-12673).
`scipy.stats` changes
----------------------
The ``frechet_l`` and ``frechet_r`` distributions were removed. They were
deprecated since SciPy ``1.0``.
Other changes
=============
``setup_requires`` was removed from ``setup.py``. This means that users
invoking ``python setup.py install`` without having numpy already installed
will now get an error, rather than having numpy installed for them via
``easy_install``. This install method was always fragile and problematic, users
are encouraged to use ``pip`` when installing from source.
- Fixed a bug in `scipy.optimize.dual_annealing` ``accept_reject`` calculation
that caused uphill jumps to be accepted less frequently.
- The time required for (un)pickling of `scipy.stats.rv_continuous`,
`scipy.stats.rv_discrete`, and `scipy.stats.rv_frozen` has been significantly
reduced (gh12550). Inheriting subclasses should note that ``__setstate__`` no
longer calls ``__init__`` upon unpickling.
Authors
=======
* endolith
* vkk800
* aditya +
* George Bateman +
* Christoph Baumgarten
* Peter Bell
* Tobias Biester +
* Keaton J. Burns +
* Evgeni Burovski
* Rüdiger Busche +
* Matthias Bussonnier
* Dominic C +
* Corallus Caninus +
* CJ Carey
* Thomas A Caswell
* chapochn +
* Lucía Cheung
* Zach Colbert +
* Coloquinte +
* Yannick Copin +
* Devin Crowley +
* Terry Davis +
* Michaël Defferrard +
* devonwp +
* Didier +
* divenex +
* Thomas Duvernay +
* Eoghan O'Connell +
* Gökçen Eraslan
* Kristian Eschenburg +
* Ralf Gommers
* Thomas Grainger +
* GreatV +
* Gregory Gundersen +
* h-vetinari +
* Matt Haberland
* Mark Harfouche +
* He He +
* Alex Henrie
* Chun-Ming Huang +
* Martin James McHugh III +
* Alex Izvorski +
* Joey +
* ST John +
* Jonas Jonker +
* Julius Bier Kirkegaard
* Marcin Konowalczyk +
* Konrad0
* Sam Van Kooten +
* Sergey Koposov +
* Peter Mahler Larsen
* Eric Larson
* Antony Lee
* Gregory R. Lee
* Loïc Estève
* Jean-Luc Margot +
* MarkusKoebis +
* Nikolay Mayorov
* G. D. McBain
* Andrew McCluskey +
* Nicholas McKibben
* Sturla Molden
* Denali Molitor +
* Eric Moore
* Shashaank N +
* Prashanth Nadukandi +
* nbelakovski +
* Andrew Nelson
* Nick +
* Nikola Forró +
* odidev
* ofirr +
* Sambit Panda
* Dima Pasechnik
* Tirth Patel +
* Paweł Redzyński +
* Vladimir Philipenko +
* Philipp Thölke +
* Ilhan Polat
* Eugene Prilepin +
* Vladyslav Rachek
* Ram Rachum +
* Tyler Reddy
* Martin Reinecke +
* Simon Segerblom Rex +
* Lucas Roberts
* Benjamin Rowell +
* Eli Rykoff +
* Atsushi Sakai
* Moritz Schulte +
* Daniel B. Smith
* Steve Smith +
* Jan Soedingrekso +
* Victor Stinner +
* Jose Storopoli +
* Diana Sukhoverkhova +
* Søren Fuglede Jørgensen
* taoky +
* Mike Taves +
* Ian Thomas +
* Will Tirone +
* Frank Torres +
* Seth Troisi
* Ronald van Elburg +
* Hugo van Kemenade
* Paul van Mulbregt
* Saul Ivan Rivas Vega +
* Pauli Virtanen
* Jan Vleeshouwers
* Samuel Wallan
* Warren Weckesser
* Ben West +
* Eric Wieser
* WillTirone +
* Levi John Wolf +
* Zhiqing Xiao
* Rory Yorke +
* Yun Wang (Maigo) +
* Egor Zemlyanoy +
* ZhihuiChen0903 +
* Jacob Zhong +
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.
```
### 1.5.4
```
compared to `1.5.3`. Importantly, wheels are now available
for Python `3.9` and a more complete fix has been applied for
issues building with XCode `12`.
Authors
=====
* Peter Bell
* CJ Carey
* Andrew McCluskey +
* Andrew Nelson
* Tyler Reddy
* Eli Rykoff +
* Ian Thomas +
A total of 7 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.
```
### 1.5.3
```
compared to `1.5.2`. In particular, Linux ARM64 wheels are now
available and a compatibility issue with XCode 12 has
been fixed.
Authors
=======
* Peter Bell
* CJ Carey
* Thomas Duvernay +
* Gregory Lee
* Eric Moore
* odidev
* Dima Pasechnik
* Tyler Reddy
* Simon Segerblom Rex +
* Daniel B. Smith
* Will Tirone +
* Warren Weckesser
A total of 12 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.
```
### 1.5.2
```
compared to `1.5.1`.
Authors
=====
* Peter Bell
* Tobias Biester +
* Evgeni Burovski
* Thomas A Caswell
* Ralf Gommers
* Sturla Molden
* Andrew Nelson
* ofirr +
* Sambit Panda
* Ilhan Polat
* Tyler Reddy
* Atsushi Sakai
* Pauli Virtanen
A total of 13 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.
```
Links
- PyPI: https://pypi.org/project/scipy
- Changelog: https://pyup.io/changelogs/scipy/
- Repo: https://github.com/scipy/scipy/releases
- Homepage: https://www.scipy.org
Changelog
### 4.2.1
```
==================
Bug Fixes
---------
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Fixed an issue where specializations of the comoving distance calculation
for certain cosmologies could not handle redshift arrays. [10980]
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix bug where manual fixes to invalid header cards were not preserved when
saving a FITS file. [11108]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- ``NumericArray`` converter now properly broadcasts scalar mask to array.
[11157]
astropy.table
^^^^^^^^^^^^^
- Fix bug when initializing a ``Table`` subclass that uses ``TableAttribute``'s.
If the data were an instance of the table then attributes provided in the
table initialization call could be ignored. [11217]
astropy.time
^^^^^^^^^^^^
- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC``
to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
This essentially changes the resulting times by 8.000082 seconds, the initial
offset between TAI and UTC. [11249]
astropy.units
^^^^^^^^^^^^^
- Fixed a bug with the ``quantity_input`` decorator where allowing
dimensionless inputs for an argument inadvertently disabled any checking of
compatible units for that argument. [11283]
astropy.utils
^^^^^^^^^^^^^
- Fix a bug so that ``np.shape``, ``np.ndim`` and ``np.size`` again work on
classes that use ``ShapedLikeNDArray``, like representations, frames,
sky coordinates, and times. [11133]
astropy.wcs
^^^^^^^^^^^
- Fix error when a user defined ``proj_point`` parameter is passed to ``fit_wcs_from_points``. [11139]
Other Changes and Additions
---------------------------
- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC``
to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
This essentially changes the resulting times by 8.000082 seconds, the initial
offset between TAI and UTC. [11249]
```
### 4.2
```
================
New Features
------------
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Methods ``convolve`` and ``convolve_fft`` both now return Quantity arrays
if user input is given in one. [10822]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Numpy functions that broadcast, change shape, or index (like
``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on
coordinates, frames, and representations. [10337]
- Add a new science state ``astropy.coordinates.erfa_astrom.erfa_astrom`` and
two classes ``ErfaAstrom``, ``ErfaAstromInterpolator`` as wrappers to
the ``pyerfa`` astrometric functions used in the coordinate transforms.
Using ``ErfaAstromInterpolator``, which interpolates astrometric properties for
``SkyCoord`` instances with arrays of obstime, can dramatically speed up
coordinate transformations while keeping microarcsecond resolution.
Depending on needed precision and the obstime array in question, speed ups
reach factors of 10x to >100x. [10647]
- ``galactocentric_frame_defaults`` can now also be used as a registry, with
user-defined parameter values and metadata. [10624]
- Method ``.realize_frame`` from coordinate frames now accepts ``**kwargs``,
including ``representation_type``. [10727]
- Avoid an unnecessary call to ``erfa.epv00`` in transformations between
``CIRS`` and ``ICRS``, improving performance by 50 %. [10814]
- A new equatorial coordinate frame, with RA and Dec measured w.r.t to the True
Equator and Equinox (TETE). This frame is commonly known as "apparent place"
and is the correct frame for coordinates returned from JPL Horizons. [10867]
- Added a context manager ``impose_finite_difference_dt`` to the
``TransformGraph`` class to override the finite-difference time step
attribute (``finite_difference_dt``) for all transformations in the graph
with that attribute. [10341]
- Improve performance of ``SpectralCoord`` by refactoring internal
implementation. [10398]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- The final version of the Planck 2018 cosmological parameters are included
as the ``Planck18`` object, which is now the default cosmology. The
parameters are identical to those of the ``Planck18_arXiv_v2`` object,
which is now deprecated and will be removed in a future release. [10915]
astropy.modeling
^^^^^^^^^^^^^^^^
- Added NFW profile and tests to modeling package [10505]
- Added missing logic for evaluate to compound models [10002]
- Stop iteration in ``FittingWithOutlierRemoval`` before reaching ``niter`` if
the masked points are no longer changing. [10642]
- Keep a (shallow) copy of ``fit_info`` from the last iteration of the wrapped
fitter in ``FittingWithOutlierRemoval`` and also record the actual number of
iterations performed in it. [10642]
- Added attributes for fitting uncertainties (covariance matrix, standard
deviations) to models. Parameter covariance matrix can be accessed via
``model.cov_matrix``, standard deviations by ``model.stds`` or individually
for each parameter by ``parameter.std``. Currently implemented for
``LinearLSQFitter`` and ``LevMarLSQFitter``. [10552]
- N-dimensional least-squares statistic and specific 1,2,3-D methods [10670]
astropy.stats
^^^^^^^^^^^^^
- Added ``circstd`` function to obtain a circular standard deviation. [10690]
astropy.table
^^^^^^^^^^^^^
- Allow initializing a ``Table`` using a list of ``names`` in conjunction with
a ``dtype`` from a numpy structured array. The list of ``names`` overrides the
names specified in the ``dtype``. [10419]
astropy.time
^^^^^^^^^^^^
- Add new ``isclose()`` method to ``Time`` and ``TimeDelta`` classes to allow
comparison of time objects to within a specified tolerance. [10646]
- Improve initialization time by a factor of four when creating a scalar ``Time``
object in a format like ``unix`` or ``cxcsec`` (time delta from a reference
epoch time). [10406]
- Improve initialization time by a factor of ~25 or more for large arrays of
string times in ISO, ISOT or year day-of-year formats. This is done with a new
C-based time parser that can be adapted for other fixed-format custom time
formats. [10360]
- Numpy functions that broadcast, change shape, or index (like
``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on times.
[10337, 10502]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
- Improve memory and speed performance when iterating over the entire time
column of a ``TimeSeries`` object. Previously this involved O(N^2) operations
and memory. [10889]
astropy.units
^^^^^^^^^^^^^
- ``Quantity.to`` has gained a ``copy`` option to allow copies to be avoided
when the units do not change. [10517]
- Added the ``spat`` unit of solid angle that represents the full sphere.
[10726]
astropy.utils
^^^^^^^^^^^^^
- ``ShapedLikeNDArray`` has gained the capability to use numpy functions
that broadcast, change shape, or index. [10337]
- ``get_free_space_in_dir`` now takes a new ``unit`` keyword and
``check_free_space_in_dir`` takes ``size`` defined as ``Quantity``. [10627]
- New ``astropy.utils.data.conf.allow_internet`` configuration item to
control downloading data from the Internet. Setting ``allow_internet=False``
is the same as ``remote_timeout=0``. Using ``remote_timeout=0`` to control
internet access will stop working in a future release. [10632]
- New ``is_url`` function so downstream packages do not have to secretly use
the hidden ``_is_url`` anymore. [10684]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Added the ``Quadrangle`` patch for ``WCSAxes`` for a latitude-longitude
quadrangle. Unlike ``matplotlib.patches.Rectangle``, the edges of this
patch will be rendered as curved lines if appropriate for the WCS
transformation. [10862]
- The position of tick labels are now only calculated when needed. If any text
parameters are changed (color, font weight, size etc.) that don't effect the
tick label position, the positions are not recomputed, improving performance.
[10806]
astropy.wcs
^^^^^^^^^^^
- ``WCS.to_header()`` now appends comments to SIP coefficients. [10480]
- A new property ``dropped_world_dimensions`` has been added to
``SlicedLowLevelWCS`` to record information about any world axes removed by
slicing a WCS. [10195]
- New ``WCS.proj_plane_pixel_scales()`` and ``WCS.proj_plane_pixel_area()``
methods to return pixel scales and area, respectively, as Quantity. [10872]
API Changes
-----------
astropy.config
^^^^^^^^^^^^^^
- ``set_temp_config`` now preserves the existing cache rather than deleting
it and relying on reloading it from the previous config file. This ensures
that any programmatically made changes are preserved as well. [10474]
- Configuration path detection logic has changed: Now, it looks for ``~`` first
before falling back to older logic. In addition, ``HOMESHARE`` is no longer
used in Windows. [10705]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- The passing of frame classes (as opposed to frame instances) to the
``transform_to()`` methods of low-level coordinate-frame classes has been
deprecated. Frame classes can still be passed to the ``transform_to()``
method of the high-level ``SkyCoord`` class, and using ``SkyCoord`` is
recommended for all typical use cases of transforming coordinates. [10475]
astropy.stats
^^^^^^^^^^^^^
- Added a ``grow`` parameter to ``SigmaClip``, ``sigma_clip`` and
``sigma_clipped_stats``, to allow expanding the masking of each deviant
value to its neighbours within a specified radius. [10613]
- Passing float ``n`` to ``poisson_conf_interval`` when using
``interval='kraft-burrows-nousek'`` now raises ``TypeError`` as its value
must be an integer. [10838]
astropy.table
^^^^^^^^^^^^^
- Change ``Table.columns.keys()`` and ``Table.columns.values()`` to both return
generators instead of a list. This matches the behavior for Python ``dict``
objects. [10543]
- Removed the ``FastBST`` and ``FastRBT`` indexing engines because they depend
on the ``bintrees`` package, which is no longer maintained and is deprecated.
Instead, use the ``SCEngine`` indexing engine, which is similar in
performance and relies on the ``sortedcontainers`` package. [10622]
- When slicing a mixin column in a table that had indices, the indices are no
longer copied since they generally are not useful, having the wrong shape.
With this, the behaviour becomes the same as that for a regular ``Column``.
(Note that this does not affect slicing of a table; sliced columns in those
will continue to carry a sliced version of any indices). [10890]
- Change behavior so that when getting a single item out of a mixin column such
as ``Time``, ``TimeDelta``, ``SkyCoord`` or ``Quantity``, the ``info``
attribute is no longer copied. This improves performance, especially when the
object is an indexed column in a ``Table``. [10889]
- Raise a TypeError when a scalar column is added to an unsized table. [10476]
- The order of columns when creating a table from a ``list`` of ``dict`` may be
changed. Previously, the order was alphabetical because the ``dict`` keys
were assumed to be in random order. Since Python 3.7, the keys are always in
order of insertion, so ``Table`` now uses the order of keys in the first row
to set the column order. To alphabetize the columns to match the previous
behavior, use ``t = t[sorted(t.colnames)]``. [10900]
astropy.time
^^^^^^^^^^^^
- Refactor ``Time`` and ``TimeDelta`` classes to inherit from a common
``TimeBase`` class. The ``TimeDelta`` class no longer inherits from ``Time``.
A number of methods that only apply to ``Time`` (e.g. ``light_travel_time``)
are no longer available in the ``TimeDelta`` class. [10656]
astropy.units
^^^^^^^^^^^^^
- The ``bar`` unit is no longer wrongly considered an SI unit, meaning that
SI decompositions like ``(u.kg*u.s**-2* u.sr**-1 * u.nm**-1).si`` will
no longer include it. [10586]
astropy.utils
^^^^^^^^^^^^^
- Shape-related items from ``astropy.utils.misc`` -- ``ShapedLikeNDArray``,
``check_broadcast``, ``unbroadcast``, and ``IncompatibleShapeError`` --
have been moved to their own module, ``astropy.utils.shapes``. They remain
importable from ``astropy.utils``. [10337]
- ``check_hashes`` keyword in ``check_download_cache`` is deprecated and will
be removed in a future release. [10628]
- ``hexdigest`` keyword in ``import_file_to_cache`` is deprecated and will
be removed in a future release. [10628]
Bug Fixes
---------
astropy.config
^^^^^^^^^^^^^^
- Fix a few issues with ``generate_config`` when used with other packages.
[10893]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Fixed a bug in the coordinate-frame attribute ``CoordinateAttribute`` where
the internal transformation could behave differently depending on whether
the input was a low-level coordinate frame or a high-level ``SkyCoord``.
``CoordinateAttribute`` now always performs a ``SkyCoord``-style internal
transformation, including the by-default merging of frame attributes. [10475]
astropy.modeling
^^^^^^^^^^^^^^^^
- Fixed an issue of ``Model.render`` when the input ``out`` datatype is not
float64. [10542]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Fix support for referencing WCSAxes coordinates by their world axes names.
[10484]
astropy.wcs
^^^^^^^^^^^
- Objective functions called by ``astropy.wcs.fit_wcs_from_points`` were
treating longitude and latitude distances equally. Now longitude scaled
properly. [10759]
Other Changes and Additions
---------------------------
- Minimum version of required Python is now 3.7. [10900]
- Minimum version of required Numpy is now 1.17. [10664]
- Minimum version of required Scipy is now 1.1. [10900]
- Minimum version of required PyYAML is now 3.13. [10900]
- Minimum version of required Matplotlib is now 3.0. [10900]
- The private ``_erfa`` module has been converted to its own package,
``pyerfa``, which is a required dependency for astropy, and can be imported
with ``import erfa``. Importing ``_erfa`` from ``astropy`` will give a
deprecation warning. [10329]
- Added ``optimize=True`` flag to calls of ``yacc.yacc`` (as already done for
``lex.lex``) to allow running in ``python -OO`` session without raising an
exception in ``astropy.units.format``. [10379]
- Shortened FITS comment strings for some D2IM and CPDIS FITS keywords to
reduce the number of FITS ``VerifyWarning`` warnings when working with WCSes
containing lookup table distortions. [10513]
- When importing astropy without first building the extension modules first,
raise an error directly instead of trying to auto-build. [10883]
```
### 4.1
```
================
New Features
------------
astropy.config
^^^^^^^^^^^^^^
- Add new function ``generate_config`` to generate the configuration file and
include it in the documentation. [10148]
- ``ConfigNamespace.__iter__`` and ``ConfigNamespace.keys`` now yield ``ConfigItem``
names defined within it. Similarly, ``items`` and ``values`` would yield like a
Python dictionary would. [10139]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Added a new ``SpectralCoord`` class that can be used to define spectral
coordinates and transform them between different velocity frames. [10185]
- Angle parsing now supports ``cardinal direction`` in the cases
where angles are initialized as ``string`` instances. eg ``"17°53'27"W"``.[9859]
- Allow in-place modification of array-valued ``Frame`` and ``SkyCoord`` objects.
This provides limited support for updating coordinate data values from another
coordinate object of the same class and equivalent frame attributes. [9857]
- Added a robust equality operator for comparing ``SkyCoord``, frame, and
representation objects. A comparison like ``sc1 == sc2`` will now return a
boolean or boolean array where the objects are strictly equal in all relevant
frame attributes and coordinate representation values. [10154]
- Added the True Equator Mean Equinox (TEME) frame. [10149]
- The ``Galactocentric`` frame will now use the "latest" parameter definitions
by default. This currently corresponds to the values defined in v4.0, but will
change with future releases. [10238]
- The ``SkyCoord.from_name()`` and Sesame name resolving functionality now is
able to cache results locally and will do so by default. [9162]
- Allow in-place modification of array-valued ``Representation`` and ``Differential``
objects, including of representations with attached differentials. [10210]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Functional Units can now be processed in CDS-tables. [9971]
- Allow reading in ASCII tables which have duplicate column names. [9939]
- Fixed failure of ASCII ``fast_reader`` to handle ``names``, ``include_names``,
``exclude_names`` arguments for ``RDB`` formatted tables. Homogenised checks
and exceptions for invalid ``names`` arguments. Improved performance when
parsing "wide" tables with many columns. [10306]
- Added type validation of key arguments in calls to ``io.ascii.read()`` and
``io.ascii.write()`` functions. [10005]
astropy.io.misc
^^^^^^^^^^^^^^^
- Added serialization of parameter constraints fixed and bounds. [10082]
- Added 'functional_models.py' and 'physical_models.py' to asdf/tags/transform,
with to allow serialization of all functional and physical models. [10028, 10293]
- Fix ASDF serialization of circular model inverses, and remove explicit calls
to ``asdf.yamlutil`` functions that became unnecessary in asdf 2.6.0. [10189, 10384]
astropy.io.fits
^^^^^^^^^^^^^^^
- Added support for writing Dask arrays to disk efficiently for ``ImageHDU`` and
``PrimaryHDU``. [9742]
- Add HDU name and ver to FITSDiff report where appropriate [10197]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- New ``exceptions.conf.max_warnings`` configuration item to control the number of times a
type of warning appears before being suppressed. [10152]
- No longer ignore attributes whose values were specified as empty
strings. [10583]
astropy.modeling
^^^^^^^^^^^^^^^^
- Added Plummer1D model to ``functional_models``. [9896]
- Added ``UnitsMapping`` model and ``Model.coerce_units`` to support units on otherwise
unitless models. [9936]
- Added ``domain`` and ``window`` attributes to ``repr`` and ``str``. Fixed bug with
``_format_repr`` in core.py. [9941]
- Polynomial attributes ``domain`` and ``window`` are now tuples of size 2 and are
validated. `repr` and `print` show only their non-default values. [10145]
- Added ``replace_submodel()`` method to ``CompoundModel`` to modify an
existing instance. [10176]
- Delay construction of ``CompoundModel`` inverse until property is accessed,
to support ASDF deserialization of circular inverses in component models. [10384]
astropy.nddata
^^^^^^^^^^^^^^
- Added support in the ``bitmask`` module for using mnemonic bit flag names
when specifying the bit flags to be used or ignored when converting a bit
field to a boolean. [10095, 10208]
- Added ``reshape_as_blocks`` function to reshape a data array into
blocks, which is useful to efficiently apply functions on block
subsets of the data instead of using loops. The reshaped array is a
view of the input data array. [10214]
- Added a ``cache`` keyword option to allow caching for ``CCDData.read`` if
filename is a URL. [10265]
astropy.table
^^^^^^^^^^^^^
- Added ability to specify a custom matching function for table joins. In
particular this makes it possible to do cross-match table joins on ``SkyCoord``,
``Quantity``, or standard columns, where column entries within a specified
distance are considered to be matched. [10169]
- Added ``units`` and ``descriptions`` keyword arguments to the Table object
initialization and ``Table.read()`` methods. This allows directly setting
the ``unit`` and ``description`` for the table columns at the time of
creating or reading the table. [9671]
- Make table ``Row`` work as mappings, by adding ``.keys()`` and ``.values()``
methods. With this ``**row`` becomes possible, as does, more simply, turning
a ``Row`` into a dictionary with ``dict(row)``. [9712]
- Added two new ``Table`` methods ``.items()`` and ``.values()``, which return
respectively ``tbl.columns.items()`` (iterator over name, column tuples) and
``tbl.columns.values()`` (list of columns) for a ``Table`` object ``tbl``. [9780]
- Added new ``Table`` method ``.round()``, which rounds numeric columns to the
specified number of decimals. [9862]
- Updated ``to_pandas()`` and ``from_pandas()`` to use and support Pandas
nullable integer data type for masked integer data. [9541]
- The HDF5 writer, ``write_table_hdf5()``, now allows passing through
additional keyword arguments to the ``h5py.Group.create_dataset()``. [9602]
- Added capability to add custom table attributes to a ``Table`` subclass.
These attributes are persistent and can be set during table creation. [10097]
- Added support for ``SkyCoord`` mixin columns in ``dstack``, ``vstack`` and
``insert_row`` functions. [9857]
- Added support for coordinate ``Representation`` and ``Differential`` mixin
columns. [10210]
astropy.time
^^^^^^^^^^^^
- Added a new time format ``unix_tai`` which is essentially Unix time but with
leap seconds included. More precisely, this is the number of seconds since
``1970-01-01 00:00:08 TAI`` and corresponds to the ``CLOCK_TAI`` clock
available on some linux platforms. [10081]
astropy.units
^^^^^^^^^^^^^
- Added ``torr`` pressure unit. [9787]
- Added the ``equal_nan`` keyword argument to ``isclose`` and ``allclose``, and
updated the docstrings. [9849]
- Added ``Rankine`` temperature unit. [9916]
- Added integrated flux unit conversion to ``spectral_density`` equivalency.
[10015]
- Changed ``pixel_scale`` equivalency to allow scales defined in any unit.
[10123]
- The ``quantity_input`` decorator now optionally allows passing through
numeric values or numpy arrays with numeric dtypes to arguments where
``dimensionless_unscaled`` is an allowed unit. [10232]
astropy.utils
^^^^^^^^^^^^^
- Added a new ``MetaAttribute`` class to support easily adding custom attributes
to a subclass of classes like ``Table`` or ``NDData`` that have a ``meta``
attribute. [10097]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Added ``invalid`` keyword to ``SqrtStretch``, ``LogStretch``,
``PowerStretch``, and ``ImageNormalize`` classes and the
``simple_norm`` function. This keyword is used to replace generated
NaN values. [10182]
- Fixed an issue where ticks were sometimes not drawn at the edges of a spherical
projection on a WCSAxes. [10442]
astropy.wcs
^^^^^^^^^^^
- WCS objects with a spectral axis will now return ``SpectralCoord``
objects when calling ``pixel_to_world`` instead of ``Quantity``,
and can now take either ``Quantity`` or ``SpectralCoord`` as input
to ``pixel_to_world``. [10185]
- Implemented support for the ``-TAB`` algorithm (WCS Paper III). [9641]
- Added an ``_as_mpl_axes`` method to the ``HightLevelWCSWrapper`` class. [10138]
- Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from
unintended lower/upper case issues [10557]
API Changes
-----------
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- The equality operator for comparing ``SkyCoord``, frame, and representation
objects was changed. A comparison like ``sc1 == sc2`` was previously
equivalent to ``sc1 is sc2``. It will now return a boolean or boolean array
where the objects are strictly equal in all relevant frame attributes and
coordinate representation values. If the objects have different frame
attributes or representation types then an exception will be raised. [10154]
- SkyCoord.radial_velocity_correction now allows you to pass an obstime directly
when the SkyCoord also has an obstime set. In this situation, the position of the
SkyCoord has space motion applied to correct to the passed obstime. This allows
mm/s radial velocity precision for objects with large space motion. [10094]
- For consistency with other astropy classes, coordinate ``Representations``
and ``Differentials`` can now be initialized with an instance of their own class
if that instance is passed in as the first argument. [10210]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Changed the behavior when reading a table where both the ``names`` argument
is provided (to specify the output column names) and the ``converters``
argument is provided (to specify column conversion functions). Previously the
``converters`` dict names referred to the *input* table column names, but now
they refer to the *output* table column names. [9739]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- For FIELDs with datatype="char", store the values as strings instead
of bytes. [9505]
astropy.table
^^^^^^^^^^^^^
- ``Table.from_pandas`` now supports a ``units`` dictionary as argument to pass units
for columns in the ``DataFrame``. [9472]
astropy.time
^^^^^^^^^^^^
- Require that ``in_subfmt`` and ``out_subfmt`` properties of a ``Time`` object
have allowed values at the time of being set, either when creating the object
or when setting those properties on an existing ``Time`` instance. Previously
the validation of those properties was not strictly enforced. [9868]
astropy.utils
^^^^^^^^^^^^^
- Changed the exception raised by ``get_readable_fileobj`` on missing
compression modules (for ``bz2`` or ``lzma``/``xz`` support) to
``ModuleNotFoundError``, consistent with ``io.fits`` file handlers. [9761]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Deprecated the ``imshow_only_kwargs`` keyword in ``imshow_norm``.
[9915]
- Non-finite input values are now automatically excluded in
``HistEqStretch`` and ``InvertedHistEqStretch``. [10177]
- The ``PowerDistStretch`` and ``InvertedPowerDistStretch`` ``a``
value is restricted to be ``a >= 0`` in addition to ``a != 1``.
[10177]
- The ``PowerStretch``, ``LogStretch``, and ``InvertedLogStretch``
``a`` value is restricted to be ``a > 0``. [10177]
- The ``AsinhStretch`` and ``SinhStretch`` ``a`` value is restricted
to be ``0 < a <= 1``. [10177]
Bug Fixes
---------
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Fix a bug where for light deflection by the Sun it was always assumed that the
source was at infinite distance, which in the (rare and) absolute worst-case
scenario could lead to errors up to 3 arcsec. [10666]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- For FIELDs with datatype="char", store the values as strings instead
of bytes. [9505]
astropy.table
^^^^^^^^^^^^^
- Fix a bug that prevented ``Time`` columns from being used to sort a table.
[10824]
astropy.wcs
^^^^^^^^^^^
- WCS objects with a spectral axis will now return ``SpectralCoord``
objects when calling ``pixel_to_world`` instead of ``Quantity``
(note that ``SpectralCoord`` is a sub-class of ``Quantity``). [10185]
- Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from
unintended lower/upper case issues [10557]
- Added bounds to ``fit_wcs_from_points`` to ensure CRPIX is on
input image. [10346]
Other Changes and Additions
---------------------------
- The way in which users can specify whether to build astropy against
existing installations of C libraries rather than the bundled one
has changed, and should now be done via environment variables rather
than setup.py flags (e.g. --use-system-erfa). The available variables
are ``ASTROPY_USE_SYSTEM_CFITSIO``, ``ASTROPY_USE_SYSTEM_ERFA``,
``ASTROPY_USE_SYSTEM_EXPAT``, ``ASTROPY_USE_SYSTEM_WCSLIB``, and
``ASTROPY_USE_SYSTEM_ALL``. These should be set to ``1`` to build
against the system libraries. [9730]
- The infrastructure of the package has been updated in line with the
APE 17 roadmap (https://github.com/astropy/astropy-APEs/blob/master/APE17.rst).
The main changes are that the ``python setup.py test`` and
``python setup.py build_docs`` commands will no longer work. The easiest
way to replicate these commands is to install the tox
(https://tox.readthedocs.io) package and run ``tox -e test`` and
``tox -e build_docs``. It is also possible to run pytest and sphinx
directly. Other significant changes include switching to setuptools_scm to
manage the version number, and adding a ``pyproject.toml`` to opt in to
isolated builds as described in PEP 517/518. [9726]
- Bundled ``expat`` is updated to version 2.2.9. [10038]
- Increase minimum asdf version to 2.6.0. [10189]
- The bundled version of PLY was updated to 3.11. [10258]
- Removed dependency on scikit-image. [10214]
```
### 4.0.5
```
==================
Bug Fixes
---------
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix bug where manual fixes to invalid header cards were not preserved when
saving a FITS file. [11108]
- Fix parsing of RVKC header card patterns that were not recognised
where multiple spaces were separating field-specifier and value like
"DP1.AXIS.1: 1". [11301]
- Fix misleading missing END card error when extra data are found at the end
of the file. [11285]
- Fix incorrect wrapping of long card values as CONTINUE cards when some
words in the value are longer than a single card. [11304]
astropy.io.misc
^^^^^^^^^^^^^^^
- Fixed problem when writing serialized metadata to HDF5 using h5py >= 3.0.
With the newer h5py this was writing the metadata table as a variable-length
string array instead of the previous fixed-length bytes array. Fixed astropy
to force using a fixed-length bytes array. [11359]
astropy.modeling
^^^^^^^^^^^^^^^^
- Change ``Voigt1D`` function to use Humlicek's approximation to avoid serious
inaccuracies + option to use (compiled) ``scipy.special.wofz`` error function
for yet more accurate results. [11177]
astropy.table
^^^^^^^^^^^^^
- Fixed bug when initializing a ``Table`` with a column as list of ``Quantity``,
for example ``Table({'x': [1*u.m, 2*u.m]})``. Previously this resulted in an
``object`` dtype with no column ``unit`` set, but now gives a float array with
the corre
Update pypolychord from 1.15.1 to 1.15.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/pypolychord - Homepage: https://ccpforge.cse.rl.ac.uk/gf/project/polychord/Update numpy from 1.19.0 to 1.21.1.
The bot wasn't able to find a changelog for this release. Got an idea?
Links
- PyPI: https://pypi.org/project/numpy - Homepage: https://www.numpy.orgUpdate scipy from 1.5.1 to 1.7.0.
Changelog
### 1.7.0 ``` 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. 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). Our development attention will now shift to bug-fix releases on the 1.7.x branch, and on adding new features on the master branch. This release requires Python `3.7+` and NumPy `1.16.5` or greater. For running on PyPy, PyPy3 `6.0+` is required. Highlights of this release - A new submodule for quasi-Monte Carlo, `scipy.stats.qmc`, was added - The documentation design was updated to use the same PyData-Sphinx theme as other NumFOCUS packages like NumPy. - We now vendor and leverage the Boost C++ library to enable numerous improvements for long-standing weaknesses in `scipy.stats` - `scipy.stats` has six new distributions, eight new (or overhauled) hypothesis tests, a new function for bootstrapping, a class that enables fast random variate sampling and percentile point function evaluation, and many other enhancements. - ``cdist`` and ``pdist`` distance calculations are faster for several metrics, especially weighted cases, thanks to a rewrite to a new C++ backend framework - A new class for radial basis function interpolation, `RBFInterpolator`, was added to address issues with the `Rbf` class. *We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of the improvements to* `scipy.stats`. New features `scipy.cluster` improvements An optional argument, ``seed``, has been added to ``kmeans`` and ``kmeans2`` to set the random generator and random state. `scipy.interpolate` improvements Improved input validation and error messages for ``fitpack.bispev`` and ``fitpack.parder`` for scenarios that previously caused substantial confusion for users. The class `RBFInterpolator` was added to supersede the `Rbf` class. The new class has usage that more closely follows other interpolator classes, corrects sign errors that caused unexpected smoothing behavior, includes polynomial terms in the interpolant (which are necessary for some RBF choices), and supports interpolation using only the k-nearest neighbors for memory efficiency. `scipy.linalg` improvements An LAPACK wrapper was added for access to the ``tgexc`` subroutine. `scipy.ndimage` improvements `scipy.ndimage.affine_transform` is now able to infer the ``output_shape`` from the ``out`` array. `scipy.optimize` improvements The optional parameter ``bounds`` was added to ``_minimize_neldermead`` to support bounds constraints for the Nelder-Mead solver. ``trustregion`` methods ``trust-krylov``, ``dogleg`` and ``trust-ncg`` can now estimate ``hess`` by finite difference using one of ``["2-point", "3-point", "cs"]``. ``halton`` was added as a ``sampling_method`` in `scipy.optimize.shgo`. ``sobol`` was fixed and is now using `scipy.stats.qmc.Sobol`. ``halton`` and ``sobol`` were added as ``init`` methods in `scipy.optimize.differential_evolution.` ``differential_evolution`` now accepts an ``x0`` parameter to provide an initial guess for the minimization. ``least_squares`` has a modest performance improvement when SciPy is built with Pythran transpiler enabled. When ``linprog`` is used with ``method`` ``'highs'``, ``'highs-ipm'``, or ``'highs-ds'``, the result object now reports the marginals (AKA shadow prices, dual values) and residuals associated with each constraint. `scipy.signal` improvements ``get_window`` supports ``general_cosine`` and ``general_hamming`` window functions. `scipy.signal.medfilt2d` now releases the GIL where appropriate to enable performance gains via multithreaded calculations. `scipy.sparse` improvements Addition of ``dia_matrix`` sparse matrices is now faster. `scipy.spatial` improvements ``distance.cdist`` and ``distance.pdist`` performance has greatly improved for certain weighted metrics. Namely: ``minkowski``, ``euclidean``, ``chebyshev``, ``canberra``, and ``cityblock``. Modest performance improvements for many of the unweighted ``cdist`` and ``pdist`` metrics noted above. The parameter ``seed`` was added to `scipy.spatial.vq.kmeans` and `scipy.spatial.vq.kmeans2`. The parameters ``axis`` and ``keepdims`` where added to `scipy.spatial.distance.jensenshannon`. The ``rotation`` methods ``from_rotvec`` and ``as_rotvec`` now accept a ``degrees`` argument to specify usage of degrees instead of radians. `scipy.special` improvements Wright's generalized Bessel function for positive arguments was added as `scipy.special.wright_bessel.` An implementation of the inverse of the Log CDF of the Normal Distribution is now available via `scipy.special.ndtri_exp`. `scipy.stats` improvements Hypothesis Tests The Mann-Whitney-Wilcoxon test, ``mannwhitneyu``, has been rewritten. It now supports n-dimensional input, an exact test method when there are no ties, and improved documentation. Please see "Other changes" for adjustments to default behavior. The new function `scipy.stats.binomtest` replaces `scipy.stats.binom_test`. The new function returns an object that calculates a confidence intervals of the proportion parameter. Also, performance was improved from O(n) to O(log(n)) by using binary search. The two-sample version of the Cramer-von Mises test is implemented in `scipy.stats.cramervonmises_2samp`. The Alexander-Govern test is implemented in the new function `scipy.stats.alexandergovern`. The new functions `scipy.stats.barnard_exact` and `scipy.stats. boschloo_exact` respectively perform Barnard's exact test and Boschloo's exact test for 2x2 contingency tables. The new function `scipy.stats.page_trend_test` performs Page's test for ordered alternatives. The new function `scipy.stats.somersd` performs Somers' D test for ordinal association between two variables. An option, ``permutations``, has been added in `scipy.stats.ttest_ind` to perform permutation t-tests. A ``trim`` option was also added to perform a trimmed (Yuen's) t-test. The ``alternative`` parameter was added to the ``skewtest``, ``kurtosistest``, ``ranksums``, ``mood``, ``ansari``, ``linregress``, and ``spearmanr`` functions to allow one-sided hypothesis testing. Sample statistics The new function `scipy.stats.differential_entropy` estimates the differential entropy of a continuous distribution from a sample. The ``boxcox`` and ``boxcox_normmax`` now allow the user to control the optimizer used to minimize the negative log-likelihood function. A new function `scipy.stats.contingency.relative_risk` calculates the relative risk, or risk ratio, of a 2x2 contingency table. The object returned has a method to compute the confidence interval of the relative risk. Performance improvements in the ``skew`` and ``kurtosis`` functions achieved by removal of repeated/redundant calculations. Substantial performance improvements in `scipy.stats.mstats.hdquantiles_sd`. The new function `scipy.stats.contingency.association` computes several measures of association for a contingency table: Pearsons contingency coefficient, Cramer's V, and Tschuprow's T. The parameter ``nan_policy`` was added to `scipy.stats.zmap` to provide options for handling the occurrence of ``nan`` in the input data. The parameter ``ddof`` was added to `scipy.stats.variation` and `scipy.stats.mstats.variation`. The parameter ``weights`` was added to `scipy.stats.gmean`. Statistical Distributions We now vendor and leverage the Boost C++ library to address a number of previously reported issues in ``stats``. Notably, ``beta``, ``binom``, ``nbinom`` now have Boost backends, and it is straightforward to leverage the backend for additional functions. The skew Cauchy probability distribution has been implemented as `scipy.stats.skewcauchy`. The Zipfian probability distribution has been implemented as `scipy.stats.zipfian`. The new distributions ``nchypergeom_fisher`` and ``nchypergeom_wallenius`` implement the Fisher and Wallenius versions of the noncentral hypergeometric distribution, respectively. The generalized hyperbolic distribution was added in `scipy.stats.genhyperbolic`. The studentized range distribution was added in `scipy.stats.studentized_range`. `scipy.stats.argus` now has improved handling for small parameter values. Better argument handling/preparation has resulted in performance improvements for many distributions. The ``cosine`` distribution has added ufuncs for ``ppf``, ``cdf``, ``sf``, and ``isf`` methods including numerical precision improvements at the edges of the support of the distribution. An option to fit the distribution to data by the method of moments has been added to the ``fit`` method of the univariate continuous distributions. Other `scipy.stats.bootstrap` has been added to allow estimation of the confidence interval and standard error of a statistic. The new function `scipy.stats.contingency.crosstab` computes a contingency table (i.e. a table of counts of unique entries) for the given data. `scipy.stats.NumericalInverseHermite` enables fast random variate sampling and percentile point function evaluation of an arbitrary univariate statistical distribution. New `scipy.stats.qmc` module This new module provides Quasi-Monte Carlo (QMC) generators and associated helper functions. It provides a generic class `scipy.stats.qmc.QMCEngine` which defines a QMC engine/sampler. An engine is state aware: it can be continued, advanced and reset. 3 base samplers are available: - `scipy.stats.qmc.Sobol` the well known Sobol low discrepancy sequence. Several warnings have been added to guide the user into properly using this sampler. The sequence is scrambled by default. - `scipy.stats.qmc.Halton`: Halton low discrepancy sequence. The sequence is scrambled by default. - `scipy.stats.qmc.LatinHypercube`: plain LHS design. And 2 special samplers are available: - `scipy.stats.qmc.MultinomialQMC`: sampling from a multinomial distribution using any of the base `scipy.stats.qmc.QMCEngine`. - `scipy.stats.qmc.MultivariateNormalQMC`: sampling from a multivariate Normal using any of the base `scipy.stats.qmc.QMCEngine`. The module also provide the following helpers: - `scipy.stats.qmc.discrepancy`: assess the quality of a set of points in terms of space coverage. - `scipy.stats.qmc.update_discrepancy`: can be used in an optimization loop to construct a good set of points. - `scipy.stats.qmc.scale`: easily scale a set of points from (to) the unit interval to (from) a given range. Deprecated features `scipy.linalg` deprecations - `scipy.linalg.pinv2` is deprecated and its functionality is completely subsumed into `scipy.linalg.pinv` - Both ``rcond``, ``cond`` keywords of `scipy.linalg.pinv` and `scipy.linalg.pinvh` were not working and now are deprecated. They are now replaced with functioning ``atol`` and ``rtol`` keywords with clear usage. `scipy.spatial` deprecations - `scipy.spatial.distance` metrics expect 1d input vectors but will call ``np.squeeze`` on their inputs to accept any extra length-1 dimensions. That behaviour is now deprecated. Backwards incompatible changes Other changes We now accept and leverage performance improvements from the ahead-of-time Python-to-C++ transpiler, Pythran, which can be optionally disabled (via ``export SCIPY_USE_PYTHRAN=0``) but is enabled by default at build time. There are two changes to the default behavior of `scipy.stats.mannwhitenyu`: - For years, use of the default ``alternative=None`` was deprecated; explicit ``alternative`` specification was required. Use of the new default value of ``alternative``, "two-sided", is now permitted. - Previously, all p-values were based on an asymptotic approximation. Now, for small samples without ties, the p-values returned are exact by default. Support has been added for PEP 621 (project metadata in ``pyproject.toml``) We now support a Gitpod environment to reduce the barrier to entry for SciPy development; for more details see `quickstart-gitpod`. Authors * endolith * Jelle Aalbers + * Adam + * Tania Allard + * Sven Baars + * Max Balandat + * baumgarc + * Christoph Baumgarten * Peter Bell * Lilian Besson * Robinson Besson + * Max Bolingbroke * Blair Bonnett + * Jordão Bragantini * Harm Buisman + * Evgeni Burovski * Matthias Bussonnier * Dominic C * CJ Carey * Ramón Casero + * Chachay + * charlotte12l + * Benjamin Curtice Corbett + * Falcon Dai + * Ian Dall + * Terry Davis * droussea2001 + * DWesl + * dwight200 + * Thomas J. Fan + * Joseph Fox-Rabinovitz * Max Frei + * Laura Gutierrez Funderburk + * gbonomib + * Matthias Geier + * Pradipta Ghosh + * Ralf Gommers * Evan H + * h-vetinari * Matt Haberland * Anselm Hahn + * Alex Henrie * Piet Hessenius + * Trever Hines + * Elisha Hollander + * Stephan Hoyer * Tom Hu + * Kei Ishikawa + * Julien Jerphanion * Robert Kern * Shashank KS + * Peter Mahler Larsen * Eric Larson * Cheng H. Lee + * Gregory R. Lee * Jean-Benoist Leger + * lgfunderburk + * liam-o-marsh + * Xingyu Liu + * Alex Loftus + * Christian Lorentzen + * Cong Ma * Marc + * MarkPundurs + * Markus Löning + * Liam Marsh + * Nicholas McKibben * melissawm + * Jamie Morton * Andrew Nelson * Nikola Forró * Tor Nordam + * Olivier Gauthé + * Rohit Pandey + * Avanindra Kumar Pandeya + * Tirth Patel * paugier + * Alex H. Wagner, PhD + * Jeff Plourde + * Ilhan Polat * pranavrajpal + * Vladyslav Rachek * Bharat Raghunathan * Recursing + * Tyler Reddy * Lucas Roberts * Gregor Robinson + * Pamphile Roy + * Atsushi Sakai * Benjamin Santos * Martin K. Scherer + * Thomas Schmelzer + * Daniel Scott + * Sebastian Wallkötter + * serge-sans-paille + * Namami Shanker + * Masashi Shibata + * Alexandre de Siqueira + * Albert Steppi + * Adam J. Stewart + * Kai Striega * Diana Sukhoverkhova * Søren Fuglede Jørgensen * Mike Taves * Dan Temkin + * Nicolas Tessore + * tsubota20 + * Robert Uhl * christos val + * Bas van Beek + * Ashutosh Varma + * Jose Vazquez + * Sebastiano Vigna * Aditya Vijaykumar * VNMabus * Arthur Volant + * Samuel Wallan * Stefan van der Walt * Warren Weckesser * Anreas Weh * Josh Wilson * Rory Yorke * Egor Zemlyanoy * Marc Zoeller + * zoj613 + * 秋纫 + A total of 126 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. ``` ### 1.6.3 ``` compared to `1.6.2`. Authors ====== * Peter Bell * Ralf Gommers * Matt Haberland * Peter Mahler Larsen * Tirth Patel * Tyler Reddy * Pamphile ROY + * Xingyu Liu + A total of 8 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. ``` ### 1.6.2 ``` compared to `1.6.1`. This is also the first SciPy release to place upper bounds on some dependencies to improve the long-term repeatability of source builds. Authors ======= * Pradipta Ghosh + * Tyler Reddy * Ralf Gommers * Martin K. Scherer + * Robert Uhl * Warren Weckesser A total of 6 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. ``` ### 1.6.1 ``` compared to `1.6.0`. Please note that for SciPy wheels to correctly install with pip on macOS 11, pip `>= 20.3.3` is needed. Authors ======= * Peter Bell * Evgeni Burovski * CJ Carey * Ralf Gommers * Peter Mahler Larsen * Cheng H. Lee + * Cong Ma * Nicholas McKibben * Nikola Forró * Tyler Reddy * Warren Weckesser A total of 11 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. ``` ### 1.6.0 ``` 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. 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). Our development attention will now shift to bug-fix releases on the 1.6.x branch, and on adding new features on the master branch. This release requires Python `3.7`+ and NumPy `1.16.5` or greater. For running on PyPy, PyPy3 `6.0`+ is required. Highlights of this release ---------------------------- - `scipy.ndimage` improvements: Fixes and ehancements to boundary extension modes for interpolation functions. Support for complex-valued inputs in many filtering and interpolation functions. New ``grid_mode`` option for `scipy.ndimage.zoom` to enable results consistent with scikit-image's ``rescale``. - `scipy.optimize.linprog` has fast, new methods for large, sparse problems from the ``HiGHS`` library. - `scipy.stats` improvements including new distributions, a new test, and enhancements to existing distributions and tests New features ============ `scipy.special` improvements ----------------------------- `scipy.special` now has improved support for 64-bit ``LAPACK`` backend `scipy.odr` improvements ------------------------- `scipy.odr` now has support for 64-bit integer ``BLAS`` `scipy.odr.ODR` has gained an optional ``overwrite`` argument so that existing files may be overwritten. `scipy.integrate` improvements ------------------------------- Some renames of functions with poor names were done, with the old names retained without being in the reference guide for backwards compatibility reasons: - ``integrate.simps`` was renamed to ``integrate.simpson`` - ``integrate.trapz`` was renamed to ``integrate.trapezoid`` - ``integrate.cumtrapz`` was renamed to ``integrate.cumulative_trapezoid`` `scipy.cluster` improvements ------------------------------- `scipy.cluster.hierarchy.DisjointSet` has been added for incremental connectivity queries. `scipy.cluster.hierarchy.dendrogram` return value now also includes leaf color information in `leaves_color_list`. `scipy.interpolate` improvements --------------------------------- `scipy.interpolate.interp1d` has a new method ``nearest-up``, similar to the existing method ``nearest`` but rounds half-integers up instead of down. `scipy.io` improvements ------------------------ Support has been added for reading arbitrary bit depth integer PCM WAV files from 1- to 32-bit, including the commonly-requested 24-bit depth. `scipy.linalg` improvements ---------------------------- The new function `scipy.linalg.matmul_toeplitz` uses the FFT to compute the product of a Toeplitz matrix with another matrix. `scipy.linalg.sqrtm` and `scipy.linalg.logm` have performance improvements thanks to additional Cython code. Python ``LAPACK`` wrappers have been added for ``pptrf``, ``pptrs``, ``ppsv``, ``pptri``, and ``ppcon``. `scipy.linalg.norm` and the ``svd`` family of functions will now use 64-bit integer backends when available. `scipy.ndimage` improvements ----------------------------- `scipy.ndimage.convolve`, `scipy.ndimage.correlate` and their 1d counterparts now accept both complex-valued images and/or complex-valued filter kernels. All convolution-based filters also now accept complex-valued inputs (e.g. ``gaussian_filter``, ``uniform_filter``, etc.). Multiple fixes and enhancements to boundary handling were introduced to `scipy.ndimage` interpolation functions (i.e. ``affine_transform``, ``geometric_transform``, ``map_coordinates``, ``rotate``, ``shift``, ``zoom``). A new boundary mode, ``grid-wrap`` was added which wraps images periodically, using a period equal to the shape of the input image grid. This is in contrast to the existing ``wrap`` mode which uses a period that is one sample smaller than the original signal extent along each dimension. A long-standing bug in the ``reflect`` boundary condition has been fixed and the mode ``grid-mirror`` was introduced as a synonym for ``reflect``. A new boundary mode, ``grid-constant`` is now available. This is similar to the existing ndimage ``constant`` mode, but interpolation will still performed at coordinate values outside of the original image extent. This ``grid-constant`` mode is consistent with OpenCV's ``BORDER_CONSTANT`` mode and scikit-image's ``constant`` mode. Spline pre-filtering (used internally by ``ndimage`` interpolation functions when ``order >= 2``), now supports all boundary modes rather than always defaulting to mirror boundary conditions. The standalone functions ``spline_filter`` and ``spline_filter1d`` have analytical boundary conditions that match modes ``mirror``, ``grid-wrap`` and ``reflect``. `scipy.ndimage` interpolation functions now accept complex-valued inputs. In this case, the interpolation is applied independently to the real and imaginary components. The ``ndimage`` tutorials (https://docs.scipy.org/doc/scipy/reference/tutorial/ndimage.html) have been updated with new figures to better clarify the exact behavior of all of the interpolation boundary modes. `scipy.ndimage.zoom` now has a ``grid_mode`` option that changes the coordinate of the center of the first pixel along an axis from 0 to 0.5. This allows resizing in a manner that is consistent with the behavior of scikit-image's ``resize`` and ``rescale`` functions (and OpenCV's ``cv2.resize``). `scipy.optimize` improvements ------------------------------ `scipy.optimize.linprog` has fast, new methods for large, sparse problems from the ``HiGHS`` C++ library. ``method='highs-ds'`` uses a high performance dual revised simplex implementation (HSOL), ``method='highs-ipm'`` uses an interior-point method with crossover, and ``method='highs'`` chooses between the two automatically. These methods are typically much faster and often exceed the accuracy of other ``linprog`` methods, so we recommend explicitly specifying one of these three method values when using ``linprog``. `scipy.optimize.quadratic_assignment` has been added for approximate solution of the quadratic assignment problem. `scipy.optimize.linear_sum_assignment` now has a substantially reduced overhead for small cost matrix sizes `scipy.optimize.least_squares` has improved performance when the user provides the jacobian as a sparse jacobian already in ``csr_matrix`` format `scipy.optimize.linprog` now has an ``rr_method`` argument for specification of the method used for redundancy handling, and a new method for this purpose is available based on the interpolative decomposition approach. `scipy.signal` improvements ---------------------------- `scipy.signal.gammatone` has been added to design FIR or IIR filters that model the human auditory system. `scipy.signal.iircomb` has been added to design IIR peaking/notching comb filters that can boost/attenuate a frequency from a signal. `scipy.signal.sosfilt` performance has been improved to avoid some previously- observed slowdowns `scipy.signal.windows.taylor` has been added--the Taylor window function is commonly used in radar digital signal processing `scipy.signal.gauss_spline` now supports ``list`` type input for consistency with other related SciPy functions `scipy.signal.correlation_lags` has been added to allow calculation of the lag/ displacement indices array for 1D cross-correlation. `scipy.sparse` improvements ---------------------------- A solver for the minimum weight full matching problem for bipartite graphs, also known as the linear assignment problem, has been added in `scipy.sparse.csgraph.min_weight_full_bipartite_matching`. In particular, this provides functionality analogous to that of `scipy.optimize.linear_sum_assignment`, but with improved performance for sparse inputs, and the ability to handle inputs whose dense representations would not fit in memory. The time complexity of `scipy.sparse.block_diag` has been improved dramatically from quadratic to linear. `scipy.sparse.linalg` improvements ----------------------------------- The vendored version of ``SuperLU`` has been updated `scipy.fft` improvements ------------------------- The vendored ``pocketfft`` library now supports compiling with ARM neon vector extensions and has improved thread pool behavior. `scipy.spatial` improvements ----------------------------- The python implementation of ``KDTree`` has been dropped and ``KDTree`` is now implemented in terms of ``cKDTree``. You can now expect ``cKDTree``-like performance by default. This also means ``sys.setrecursionlimit`` no longer needs to be increased for querying large trees. ``transform.Rotation`` has been updated with support for Modified Rodrigues Parameters alongside the existing rotation representations (PR gh-12667). `scipy.spatial.transform.Rotation` has been partially cythonized, with some performance improvements observed `scipy.spatial.distance.cdist` has improved performance with the ``minkowski`` metric, especially for p-norm values of 1 or 2. `scipy.stats` improvements --------------------------- New distributions have been added to `scipy.stats`: - The asymmetric Laplace continuous distribution has been added as `scipy.stats.laplace_asymmetric`. - The negative hypergeometric distribution has been added as `scipy.stats.nhypergeom`. - The multivariate t distribution has been added as `scipy.stats.multivariate_t`. - The multivariate hypergeometric distribution has been added as `scipy.stats.multivariate_hypergeom`. The ``fit`` method has been overridden for several distributions (``laplace``, ``pareto``, ``rayleigh``, ``invgauss``, ``logistic``, ``gumbel_l``, ``gumbel_r``); they now use analytical, distribution-specific maximum likelihood estimation results for greater speed and accuracy than the generic (numerical optimization) implementation. The one-sample Cramér-von Mises test has been added as `scipy.stats.cramervonmises`. An option to compute one-sided p-values was added to `scipy.stats.ttest_1samp`, `scipy.stats.ttest_ind_from_stats`, `scipy.stats.ttest_ind` and `scipy.stats.ttest_rel`. The function `scipy.stats.kendalltau` now has an option to compute Kendall's tau-c (also known as Stuart's tau-c), and support has been added for exact p-value calculations for sample sizes ``> 171``. `stats.trapz` was renamed to `stats.trapezoid`, with the former name retained as an alias for backwards compatibility reasons. The function `scipy.stats.linregress` now includes the standard error of the intercept in its return value. The ``_logpdf``, ``_sf``, and ``_isf`` methods have been added to `scipy.stats.nakagami`; ``_sf`` and ``_isf`` methods also added to `scipy.stats.gumbel_r` The ``sf`` method has been added to `scipy.stats.levy` and `scipy.stats.levy_l` for improved precision. `scipy.stats.binned_statistic_dd` performance improvements for the following computed statistics: ``max``, ``min``, ``median``, and ``std``. We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source Software for Science program for supporting many of these improvements to `scipy.stats`. Deprecated features =================== `scipy.spatial` changes ------------------------ Calling ``KDTree.query`` with ``k=None`` to find all neighbours is deprecated. Use ``KDTree.query_ball_point`` instead. ``distance.wminkowski`` was deprecated; use ``distance.minkowski`` and supply weights with the ``w`` keyword instead. Backwards incompatible changes ============================== `scipy` changes ---------------- Using `scipy.fft` as a function aliasing ``numpy.fft.fft`` was removed after being deprecated in SciPy ``1.4.0``. As a result, the `scipy.fft` submodule must be explicitly imported now, in line with other SciPy subpackages. `scipy.signal` changes ----------------------- The output of ``decimate``, ``lfilter_zi``, ``lfiltic``, ``sos2tf``, and ``sosfilt_zi`` have been changed to match ``numpy.result_type`` of their inputs. The window function ``slepian`` was removed. It had been deprecated since SciPy ``1.1``. `scipy.spatial` changes ------------------------ ``cKDTree.query`` now returns 64-bit rather than 32-bit integers on Windows, making behaviour consistent between platforms (PR gh-12673). `scipy.stats` changes ---------------------- The ``frechet_l`` and ``frechet_r`` distributions were removed. They were deprecated since SciPy ``1.0``. Other changes ============= ``setup_requires`` was removed from ``setup.py``. This means that users invoking ``python setup.py install`` without having numpy already installed will now get an error, rather than having numpy installed for them via ``easy_install``. This install method was always fragile and problematic, users are encouraged to use ``pip`` when installing from source. - Fixed a bug in `scipy.optimize.dual_annealing` ``accept_reject`` calculation that caused uphill jumps to be accepted less frequently. - The time required for (un)pickling of `scipy.stats.rv_continuous`, `scipy.stats.rv_discrete`, and `scipy.stats.rv_frozen` has been significantly reduced (gh12550). Inheriting subclasses should note that ``__setstate__`` no longer calls ``__init__`` upon unpickling. Authors ======= * endolith * vkk800 * aditya + * George Bateman + * Christoph Baumgarten * Peter Bell * Tobias Biester + * Keaton J. Burns + * Evgeni Burovski * Rüdiger Busche + * Matthias Bussonnier * Dominic C + * Corallus Caninus + * CJ Carey * Thomas A Caswell * chapochn + * Lucía Cheung * Zach Colbert + * Coloquinte + * Yannick Copin + * Devin Crowley + * Terry Davis + * Michaël Defferrard + * devonwp + * Didier + * divenex + * Thomas Duvernay + * Eoghan O'Connell + * Gökçen Eraslan * Kristian Eschenburg + * Ralf Gommers * Thomas Grainger + * GreatV + * Gregory Gundersen + * h-vetinari + * Matt Haberland * Mark Harfouche + * He He + * Alex Henrie * Chun-Ming Huang + * Martin James McHugh III + * Alex Izvorski + * Joey + * ST John + * Jonas Jonker + * Julius Bier Kirkegaard * Marcin Konowalczyk + * Konrad0 * Sam Van Kooten + * Sergey Koposov + * Peter Mahler Larsen * Eric Larson * Antony Lee * Gregory R. Lee * Loïc Estève * Jean-Luc Margot + * MarkusKoebis + * Nikolay Mayorov * G. D. McBain * Andrew McCluskey + * Nicholas McKibben * Sturla Molden * Denali Molitor + * Eric Moore * Shashaank N + * Prashanth Nadukandi + * nbelakovski + * Andrew Nelson * Nick + * Nikola Forró + * odidev * ofirr + * Sambit Panda * Dima Pasechnik * Tirth Patel + * Paweł Redzyński + * Vladimir Philipenko + * Philipp Thölke + * Ilhan Polat * Eugene Prilepin + * Vladyslav Rachek * Ram Rachum + * Tyler Reddy * Martin Reinecke + * Simon Segerblom Rex + * Lucas Roberts * Benjamin Rowell + * Eli Rykoff + * Atsushi Sakai * Moritz Schulte + * Daniel B. Smith * Steve Smith + * Jan Soedingrekso + * Victor Stinner + * Jose Storopoli + * Diana Sukhoverkhova + * Søren Fuglede Jørgensen * taoky + * Mike Taves + * Ian Thomas + * Will Tirone + * Frank Torres + * Seth Troisi * Ronald van Elburg + * Hugo van Kemenade * Paul van Mulbregt * Saul Ivan Rivas Vega + * Pauli Virtanen * Jan Vleeshouwers * Samuel Wallan * Warren Weckesser * Ben West + * Eric Wieser * WillTirone + * Levi John Wolf + * Zhiqing Xiao * Rory Yorke + * Yun Wang (Maigo) + * Egor Zemlyanoy + * ZhihuiChen0903 + * Jacob Zhong + 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. ``` ### 1.5.4 ``` compared to `1.5.3`. Importantly, wheels are now available for Python `3.9` and a more complete fix has been applied for issues building with XCode `12`. Authors ===== * Peter Bell * CJ Carey * Andrew McCluskey + * Andrew Nelson * Tyler Reddy * Eli Rykoff + * Ian Thomas + A total of 7 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. ``` ### 1.5.3 ``` compared to `1.5.2`. In particular, Linux ARM64 wheels are now available and a compatibility issue with XCode 12 has been fixed. Authors ======= * Peter Bell * CJ Carey * Thomas Duvernay + * Gregory Lee * Eric Moore * odidev * Dima Pasechnik * Tyler Reddy * Simon Segerblom Rex + * Daniel B. Smith * Will Tirone + * Warren Weckesser A total of 12 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. ``` ### 1.5.2 ``` compared to `1.5.1`. Authors ===== * Peter Bell * Tobias Biester + * Evgeni Burovski * Thomas A Caswell * Ralf Gommers * Sturla Molden * Andrew Nelson * ofirr + * Sambit Panda * Ilhan Polat * Tyler Reddy * Atsushi Sakai * Pauli Virtanen A total of 13 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. ```Links
- PyPI: https://pypi.org/project/scipy - Changelog: https://pyup.io/changelogs/scipy/ - Repo: https://github.com/scipy/scipy/releases - Homepage: https://www.scipy.orgUpdate astropy from 4.0.1.post1 to 4.2.1.
Changelog
### 4.2.1 ``` ================== Bug Fixes --------- astropy.cosmology ^^^^^^^^^^^^^^^^^ - Fixed an issue where specializations of the comoving distance calculation for certain cosmologies could not handle redshift arrays. [10980] astropy.io.fits ^^^^^^^^^^^^^^^ - Fix bug where manual fixes to invalid header cards were not preserved when saving a FITS file. [11108] astropy.io.votable ^^^^^^^^^^^^^^^^^^ - ``NumericArray`` converter now properly broadcasts scalar mask to array. [11157] astropy.table ^^^^^^^^^^^^^ - Fix bug when initializing a ``Table`` subclass that uses ``TableAttribute``'s. If the data were an instance of the table then attributes provided in the table initialization call could be ignored. [11217] astropy.time ^^^^^^^^^^^^ - Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC`` to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour. This essentially changes the resulting times by 8.000082 seconds, the initial offset between TAI and UTC. [11249] astropy.units ^^^^^^^^^^^^^ - Fixed a bug with the ``quantity_input`` decorator where allowing dimensionless inputs for an argument inadvertently disabled any checking of compatible units for that argument. [11283] astropy.utils ^^^^^^^^^^^^^ - Fix a bug so that ``np.shape``, ``np.ndim`` and ``np.size`` again work on classes that use ``ShapedLikeNDArray``, like representations, frames, sky coordinates, and times. [11133] astropy.wcs ^^^^^^^^^^^ - Fix error when a user defined ``proj_point`` parameter is passed to ``fit_wcs_from_points``. [11139] Other Changes and Additions --------------------------- - Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC`` to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour. This essentially changes the resulting times by 8.000082 seconds, the initial offset between TAI and UTC. [11249] ``` ### 4.2 ``` ================ New Features ------------ astropy.convolution ^^^^^^^^^^^^^^^^^^^ - Methods ``convolve`` and ``convolve_fft`` both now return Quantity arrays if user input is given in one. [10822] astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - Numpy functions that broadcast, change shape, or index (like ``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on coordinates, frames, and representations. [10337] - Add a new science state ``astropy.coordinates.erfa_astrom.erfa_astrom`` and two classes ``ErfaAstrom``, ``ErfaAstromInterpolator`` as wrappers to the ``pyerfa`` astrometric functions used in the coordinate transforms. Using ``ErfaAstromInterpolator``, which interpolates astrometric properties for ``SkyCoord`` instances with arrays of obstime, can dramatically speed up coordinate transformations while keeping microarcsecond resolution. Depending on needed precision and the obstime array in question, speed ups reach factors of 10x to >100x. [10647] - ``galactocentric_frame_defaults`` can now also be used as a registry, with user-defined parameter values and metadata. [10624] - Method ``.realize_frame`` from coordinate frames now accepts ``**kwargs``, including ``representation_type``. [10727] - Avoid an unnecessary call to ``erfa.epv00`` in transformations between ``CIRS`` and ``ICRS``, improving performance by 50 %. [10814] - A new equatorial coordinate frame, with RA and Dec measured w.r.t to the True Equator and Equinox (TETE). This frame is commonly known as "apparent place" and is the correct frame for coordinates returned from JPL Horizons. [10867] - Added a context manager ``impose_finite_difference_dt`` to the ``TransformGraph`` class to override the finite-difference time step attribute (``finite_difference_dt``) for all transformations in the graph with that attribute. [10341] - Improve performance of ``SpectralCoord`` by refactoring internal implementation. [10398] astropy.cosmology ^^^^^^^^^^^^^^^^^ - The final version of the Planck 2018 cosmological parameters are included as the ``Planck18`` object, which is now the default cosmology. The parameters are identical to those of the ``Planck18_arXiv_v2`` object, which is now deprecated and will be removed in a future release. [10915] astropy.modeling ^^^^^^^^^^^^^^^^ - Added NFW profile and tests to modeling package [10505] - Added missing logic for evaluate to compound models [10002] - Stop iteration in ``FittingWithOutlierRemoval`` before reaching ``niter`` if the masked points are no longer changing. [10642] - Keep a (shallow) copy of ``fit_info`` from the last iteration of the wrapped fitter in ``FittingWithOutlierRemoval`` and also record the actual number of iterations performed in it. [10642] - Added attributes for fitting uncertainties (covariance matrix, standard deviations) to models. Parameter covariance matrix can be accessed via ``model.cov_matrix``, standard deviations by ``model.stds`` or individually for each parameter by ``parameter.std``. Currently implemented for ``LinearLSQFitter`` and ``LevMarLSQFitter``. [10552] - N-dimensional least-squares statistic and specific 1,2,3-D methods [10670] astropy.stats ^^^^^^^^^^^^^ - Added ``circstd`` function to obtain a circular standard deviation. [10690] astropy.table ^^^^^^^^^^^^^ - Allow initializing a ``Table`` using a list of ``names`` in conjunction with a ``dtype`` from a numpy structured array. The list of ``names`` overrides the names specified in the ``dtype``. [10419] astropy.time ^^^^^^^^^^^^ - Add new ``isclose()`` method to ``Time`` and ``TimeDelta`` classes to allow comparison of time objects to within a specified tolerance. [10646] - Improve initialization time by a factor of four when creating a scalar ``Time`` object in a format like ``unix`` or ``cxcsec`` (time delta from a reference epoch time). [10406] - Improve initialization time by a factor of ~25 or more for large arrays of string times in ISO, ISOT or year day-of-year formats. This is done with a new C-based time parser that can be adapted for other fixed-format custom time formats. [10360] - Numpy functions that broadcast, change shape, or index (like ``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on times. [10337, 10502] astropy.timeseries ^^^^^^^^^^^^^^^^^^ - Improve memory and speed performance when iterating over the entire time column of a ``TimeSeries`` object. Previously this involved O(N^2) operations and memory. [10889] astropy.units ^^^^^^^^^^^^^ - ``Quantity.to`` has gained a ``copy`` option to allow copies to be avoided when the units do not change. [10517] - Added the ``spat`` unit of solid angle that represents the full sphere. [10726] astropy.utils ^^^^^^^^^^^^^ - ``ShapedLikeNDArray`` has gained the capability to use numpy functions that broadcast, change shape, or index. [10337] - ``get_free_space_in_dir`` now takes a new ``unit`` keyword and ``check_free_space_in_dir`` takes ``size`` defined as ``Quantity``. [10627] - New ``astropy.utils.data.conf.allow_internet`` configuration item to control downloading data from the Internet. Setting ``allow_internet=False`` is the same as ``remote_timeout=0``. Using ``remote_timeout=0`` to control internet access will stop working in a future release. [10632] - New ``is_url`` function so downstream packages do not have to secretly use the hidden ``_is_url`` anymore. [10684] astropy.visualization ^^^^^^^^^^^^^^^^^^^^^ - Added the ``Quadrangle`` patch for ``WCSAxes`` for a latitude-longitude quadrangle. Unlike ``matplotlib.patches.Rectangle``, the edges of this patch will be rendered as curved lines if appropriate for the WCS transformation. [10862] - The position of tick labels are now only calculated when needed. If any text parameters are changed (color, font weight, size etc.) that don't effect the tick label position, the positions are not recomputed, improving performance. [10806] astropy.wcs ^^^^^^^^^^^ - ``WCS.to_header()`` now appends comments to SIP coefficients. [10480] - A new property ``dropped_world_dimensions`` has been added to ``SlicedLowLevelWCS`` to record information about any world axes removed by slicing a WCS. [10195] - New ``WCS.proj_plane_pixel_scales()`` and ``WCS.proj_plane_pixel_area()`` methods to return pixel scales and area, respectively, as Quantity. [10872] API Changes ----------- astropy.config ^^^^^^^^^^^^^^ - ``set_temp_config`` now preserves the existing cache rather than deleting it and relying on reloading it from the previous config file. This ensures that any programmatically made changes are preserved as well. [10474] - Configuration path detection logic has changed: Now, it looks for ``~`` first before falling back to older logic. In addition, ``HOMESHARE`` is no longer used in Windows. [10705] astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - The passing of frame classes (as opposed to frame instances) to the ``transform_to()`` methods of low-level coordinate-frame classes has been deprecated. Frame classes can still be passed to the ``transform_to()`` method of the high-level ``SkyCoord`` class, and using ``SkyCoord`` is recommended for all typical use cases of transforming coordinates. [10475] astropy.stats ^^^^^^^^^^^^^ - Added a ``grow`` parameter to ``SigmaClip``, ``sigma_clip`` and ``sigma_clipped_stats``, to allow expanding the masking of each deviant value to its neighbours within a specified radius. [10613] - Passing float ``n`` to ``poisson_conf_interval`` when using ``interval='kraft-burrows-nousek'`` now raises ``TypeError`` as its value must be an integer. [10838] astropy.table ^^^^^^^^^^^^^ - Change ``Table.columns.keys()`` and ``Table.columns.values()`` to both return generators instead of a list. This matches the behavior for Python ``dict`` objects. [10543] - Removed the ``FastBST`` and ``FastRBT`` indexing engines because they depend on the ``bintrees`` package, which is no longer maintained and is deprecated. Instead, use the ``SCEngine`` indexing engine, which is similar in performance and relies on the ``sortedcontainers`` package. [10622] - When slicing a mixin column in a table that had indices, the indices are no longer copied since they generally are not useful, having the wrong shape. With this, the behaviour becomes the same as that for a regular ``Column``. (Note that this does not affect slicing of a table; sliced columns in those will continue to carry a sliced version of any indices). [10890] - Change behavior so that when getting a single item out of a mixin column such as ``Time``, ``TimeDelta``, ``SkyCoord`` or ``Quantity``, the ``info`` attribute is no longer copied. This improves performance, especially when the object is an indexed column in a ``Table``. [10889] - Raise a TypeError when a scalar column is added to an unsized table. [10476] - The order of columns when creating a table from a ``list`` of ``dict`` may be changed. Previously, the order was alphabetical because the ``dict`` keys were assumed to be in random order. Since Python 3.7, the keys are always in order of insertion, so ``Table`` now uses the order of keys in the first row to set the column order. To alphabetize the columns to match the previous behavior, use ``t = t[sorted(t.colnames)]``. [10900] astropy.time ^^^^^^^^^^^^ - Refactor ``Time`` and ``TimeDelta`` classes to inherit from a common ``TimeBase`` class. The ``TimeDelta`` class no longer inherits from ``Time``. A number of methods that only apply to ``Time`` (e.g. ``light_travel_time``) are no longer available in the ``TimeDelta`` class. [10656] astropy.units ^^^^^^^^^^^^^ - The ``bar`` unit is no longer wrongly considered an SI unit, meaning that SI decompositions like ``(u.kg*u.s**-2* u.sr**-1 * u.nm**-1).si`` will no longer include it. [10586] astropy.utils ^^^^^^^^^^^^^ - Shape-related items from ``astropy.utils.misc`` -- ``ShapedLikeNDArray``, ``check_broadcast``, ``unbroadcast``, and ``IncompatibleShapeError`` -- have been moved to their own module, ``astropy.utils.shapes``. They remain importable from ``astropy.utils``. [10337] - ``check_hashes`` keyword in ``check_download_cache`` is deprecated and will be removed in a future release. [10628] - ``hexdigest`` keyword in ``import_file_to_cache`` is deprecated and will be removed in a future release. [10628] Bug Fixes --------- astropy.config ^^^^^^^^^^^^^^ - Fix a few issues with ``generate_config`` when used with other packages. [10893] astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - Fixed a bug in the coordinate-frame attribute ``CoordinateAttribute`` where the internal transformation could behave differently depending on whether the input was a low-level coordinate frame or a high-level ``SkyCoord``. ``CoordinateAttribute`` now always performs a ``SkyCoord``-style internal transformation, including the by-default merging of frame attributes. [10475] astropy.modeling ^^^^^^^^^^^^^^^^ - Fixed an issue of ``Model.render`` when the input ``out`` datatype is not float64. [10542] astropy.visualization ^^^^^^^^^^^^^^^^^^^^^ - Fix support for referencing WCSAxes coordinates by their world axes names. [10484] astropy.wcs ^^^^^^^^^^^ - Objective functions called by ``astropy.wcs.fit_wcs_from_points`` were treating longitude and latitude distances equally. Now longitude scaled properly. [10759] Other Changes and Additions --------------------------- - Minimum version of required Python is now 3.7. [10900] - Minimum version of required Numpy is now 1.17. [10664] - Minimum version of required Scipy is now 1.1. [10900] - Minimum version of required PyYAML is now 3.13. [10900] - Minimum version of required Matplotlib is now 3.0. [10900] - The private ``_erfa`` module has been converted to its own package, ``pyerfa``, which is a required dependency for astropy, and can be imported with ``import erfa``. Importing ``_erfa`` from ``astropy`` will give a deprecation warning. [10329] - Added ``optimize=True`` flag to calls of ``yacc.yacc`` (as already done for ``lex.lex``) to allow running in ``python -OO`` session without raising an exception in ``astropy.units.format``. [10379] - Shortened FITS comment strings for some D2IM and CPDIS FITS keywords to reduce the number of FITS ``VerifyWarning`` warnings when working with WCSes containing lookup table distortions. [10513] - When importing astropy without first building the extension modules first, raise an error directly instead of trying to auto-build. [10883] ``` ### 4.1 ``` ================ New Features ------------ astropy.config ^^^^^^^^^^^^^^ - Add new function ``generate_config`` to generate the configuration file and include it in the documentation. [10148] - ``ConfigNamespace.__iter__`` and ``ConfigNamespace.keys`` now yield ``ConfigItem`` names defined within it. Similarly, ``items`` and ``values`` would yield like a Python dictionary would. [10139] astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - Added a new ``SpectralCoord`` class that can be used to define spectral coordinates and transform them between different velocity frames. [10185] - Angle parsing now supports ``cardinal direction`` in the cases where angles are initialized as ``string`` instances. eg ``"17°53'27"W"``.[9859] - Allow in-place modification of array-valued ``Frame`` and ``SkyCoord`` objects. This provides limited support for updating coordinate data values from another coordinate object of the same class and equivalent frame attributes. [9857] - Added a robust equality operator for comparing ``SkyCoord``, frame, and representation objects. A comparison like ``sc1 == sc2`` will now return a boolean or boolean array where the objects are strictly equal in all relevant frame attributes and coordinate representation values. [10154] - Added the True Equator Mean Equinox (TEME) frame. [10149] - The ``Galactocentric`` frame will now use the "latest" parameter definitions by default. This currently corresponds to the values defined in v4.0, but will change with future releases. [10238] - The ``SkyCoord.from_name()`` and Sesame name resolving functionality now is able to cache results locally and will do so by default. [9162] - Allow in-place modification of array-valued ``Representation`` and ``Differential`` objects, including of representations with attached differentials. [10210] astropy.io.ascii ^^^^^^^^^^^^^^^^ - Functional Units can now be processed in CDS-tables. [9971] - Allow reading in ASCII tables which have duplicate column names. [9939] - Fixed failure of ASCII ``fast_reader`` to handle ``names``, ``include_names``, ``exclude_names`` arguments for ``RDB`` formatted tables. Homogenised checks and exceptions for invalid ``names`` arguments. Improved performance when parsing "wide" tables with many columns. [10306] - Added type validation of key arguments in calls to ``io.ascii.read()`` and ``io.ascii.write()`` functions. [10005] astropy.io.misc ^^^^^^^^^^^^^^^ - Added serialization of parameter constraints fixed and bounds. [10082] - Added 'functional_models.py' and 'physical_models.py' to asdf/tags/transform, with to allow serialization of all functional and physical models. [10028, 10293] - Fix ASDF serialization of circular model inverses, and remove explicit calls to ``asdf.yamlutil`` functions that became unnecessary in asdf 2.6.0. [10189, 10384] astropy.io.fits ^^^^^^^^^^^^^^^ - Added support for writing Dask arrays to disk efficiently for ``ImageHDU`` and ``PrimaryHDU``. [9742] - Add HDU name and ver to FITSDiff report where appropriate [10197] astropy.io.votable ^^^^^^^^^^^^^^^^^^ - New ``exceptions.conf.max_warnings`` configuration item to control the number of times a type of warning appears before being suppressed. [10152] - No longer ignore attributes whose values were specified as empty strings. [10583] astropy.modeling ^^^^^^^^^^^^^^^^ - Added Plummer1D model to ``functional_models``. [9896] - Added ``UnitsMapping`` model and ``Model.coerce_units`` to support units on otherwise unitless models. [9936] - Added ``domain`` and ``window`` attributes to ``repr`` and ``str``. Fixed bug with ``_format_repr`` in core.py. [9941] - Polynomial attributes ``domain`` and ``window`` are now tuples of size 2 and are validated. `repr` and `print` show only their non-default values. [10145] - Added ``replace_submodel()`` method to ``CompoundModel`` to modify an existing instance. [10176] - Delay construction of ``CompoundModel`` inverse until property is accessed, to support ASDF deserialization of circular inverses in component models. [10384] astropy.nddata ^^^^^^^^^^^^^^ - Added support in the ``bitmask`` module for using mnemonic bit flag names when specifying the bit flags to be used or ignored when converting a bit field to a boolean. [10095, 10208] - Added ``reshape_as_blocks`` function to reshape a data array into blocks, which is useful to efficiently apply functions on block subsets of the data instead of using loops. The reshaped array is a view of the input data array. [10214] - Added a ``cache`` keyword option to allow caching for ``CCDData.read`` if filename is a URL. [10265] astropy.table ^^^^^^^^^^^^^ - Added ability to specify a custom matching function for table joins. In particular this makes it possible to do cross-match table joins on ``SkyCoord``, ``Quantity``, or standard columns, where column entries within a specified distance are considered to be matched. [10169] - Added ``units`` and ``descriptions`` keyword arguments to the Table object initialization and ``Table.read()`` methods. This allows directly setting the ``unit`` and ``description`` for the table columns at the time of creating or reading the table. [9671] - Make table ``Row`` work as mappings, by adding ``.keys()`` and ``.values()`` methods. With this ``**row`` becomes possible, as does, more simply, turning a ``Row`` into a dictionary with ``dict(row)``. [9712] - Added two new ``Table`` methods ``.items()`` and ``.values()``, which return respectively ``tbl.columns.items()`` (iterator over name, column tuples) and ``tbl.columns.values()`` (list of columns) for a ``Table`` object ``tbl``. [9780] - Added new ``Table`` method ``.round()``, which rounds numeric columns to the specified number of decimals. [9862] - Updated ``to_pandas()`` and ``from_pandas()`` to use and support Pandas nullable integer data type for masked integer data. [9541] - The HDF5 writer, ``write_table_hdf5()``, now allows passing through additional keyword arguments to the ``h5py.Group.create_dataset()``. [9602] - Added capability to add custom table attributes to a ``Table`` subclass. These attributes are persistent and can be set during table creation. [10097] - Added support for ``SkyCoord`` mixin columns in ``dstack``, ``vstack`` and ``insert_row`` functions. [9857] - Added support for coordinate ``Representation`` and ``Differential`` mixin columns. [10210] astropy.time ^^^^^^^^^^^^ - Added a new time format ``unix_tai`` which is essentially Unix time but with leap seconds included. More precisely, this is the number of seconds since ``1970-01-01 00:00:08 TAI`` and corresponds to the ``CLOCK_TAI`` clock available on some linux platforms. [10081] astropy.units ^^^^^^^^^^^^^ - Added ``torr`` pressure unit. [9787] - Added the ``equal_nan`` keyword argument to ``isclose`` and ``allclose``, and updated the docstrings. [9849] - Added ``Rankine`` temperature unit. [9916] - Added integrated flux unit conversion to ``spectral_density`` equivalency. [10015] - Changed ``pixel_scale`` equivalency to allow scales defined in any unit. [10123] - The ``quantity_input`` decorator now optionally allows passing through numeric values or numpy arrays with numeric dtypes to arguments where ``dimensionless_unscaled`` is an allowed unit. [10232] astropy.utils ^^^^^^^^^^^^^ - Added a new ``MetaAttribute`` class to support easily adding custom attributes to a subclass of classes like ``Table`` or ``NDData`` that have a ``meta`` attribute. [10097] astropy.visualization ^^^^^^^^^^^^^^^^^^^^^ - Added ``invalid`` keyword to ``SqrtStretch``, ``LogStretch``, ``PowerStretch``, and ``ImageNormalize`` classes and the ``simple_norm`` function. This keyword is used to replace generated NaN values. [10182] - Fixed an issue where ticks were sometimes not drawn at the edges of a spherical projection on a WCSAxes. [10442] astropy.wcs ^^^^^^^^^^^ - WCS objects with a spectral axis will now return ``SpectralCoord`` objects when calling ``pixel_to_world`` instead of ``Quantity``, and can now take either ``Quantity`` or ``SpectralCoord`` as input to ``pixel_to_world``. [10185] - Implemented support for the ``-TAB`` algorithm (WCS Paper III). [9641] - Added an ``_as_mpl_axes`` method to the ``HightLevelWCSWrapper`` class. [10138] - Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from unintended lower/upper case issues [10557] API Changes ----------- astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - The equality operator for comparing ``SkyCoord``, frame, and representation objects was changed. A comparison like ``sc1 == sc2`` was previously equivalent to ``sc1 is sc2``. It will now return a boolean or boolean array where the objects are strictly equal in all relevant frame attributes and coordinate representation values. If the objects have different frame attributes or representation types then an exception will be raised. [10154] - SkyCoord.radial_velocity_correction now allows you to pass an obstime directly when the SkyCoord also has an obstime set. In this situation, the position of the SkyCoord has space motion applied to correct to the passed obstime. This allows mm/s radial velocity precision for objects with large space motion. [10094] - For consistency with other astropy classes, coordinate ``Representations`` and ``Differentials`` can now be initialized with an instance of their own class if that instance is passed in as the first argument. [10210] astropy.io.ascii ^^^^^^^^^^^^^^^^ - Changed the behavior when reading a table where both the ``names`` argument is provided (to specify the output column names) and the ``converters`` argument is provided (to specify column conversion functions). Previously the ``converters`` dict names referred to the *input* table column names, but now they refer to the *output* table column names. [9739] astropy.io.votable ^^^^^^^^^^^^^^^^^^ - For FIELDs with datatype="char", store the values as strings instead of bytes. [9505] astropy.table ^^^^^^^^^^^^^ - ``Table.from_pandas`` now supports a ``units`` dictionary as argument to pass units for columns in the ``DataFrame``. [9472] astropy.time ^^^^^^^^^^^^ - Require that ``in_subfmt`` and ``out_subfmt`` properties of a ``Time`` object have allowed values at the time of being set, either when creating the object or when setting those properties on an existing ``Time`` instance. Previously the validation of those properties was not strictly enforced. [9868] astropy.utils ^^^^^^^^^^^^^ - Changed the exception raised by ``get_readable_fileobj`` on missing compression modules (for ``bz2`` or ``lzma``/``xz`` support) to ``ModuleNotFoundError``, consistent with ``io.fits`` file handlers. [9761] astropy.visualization ^^^^^^^^^^^^^^^^^^^^^ - Deprecated the ``imshow_only_kwargs`` keyword in ``imshow_norm``. [9915] - Non-finite input values are now automatically excluded in ``HistEqStretch`` and ``InvertedHistEqStretch``. [10177] - The ``PowerDistStretch`` and ``InvertedPowerDistStretch`` ``a`` value is restricted to be ``a >= 0`` in addition to ``a != 1``. [10177] - The ``PowerStretch``, ``LogStretch``, and ``InvertedLogStretch`` ``a`` value is restricted to be ``a > 0``. [10177] - The ``AsinhStretch`` and ``SinhStretch`` ``a`` value is restricted to be ``0 < a <= 1``. [10177] Bug Fixes --------- astropy.coordinates ^^^^^^^^^^^^^^^^^^^ - Fix a bug where for light deflection by the Sun it was always assumed that the source was at infinite distance, which in the (rare and) absolute worst-case scenario could lead to errors up to 3 arcsec. [10666] astropy.io.votable ^^^^^^^^^^^^^^^^^^ - For FIELDs with datatype="char", store the values as strings instead of bytes. [9505] astropy.table ^^^^^^^^^^^^^ - Fix a bug that prevented ``Time`` columns from being used to sort a table. [10824] astropy.wcs ^^^^^^^^^^^ - WCS objects with a spectral axis will now return ``SpectralCoord`` objects when calling ``pixel_to_world`` instead of ``Quantity`` (note that ``SpectralCoord`` is a sub-class of ``Quantity``). [10185] - Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from unintended lower/upper case issues [10557] - Added bounds to ``fit_wcs_from_points`` to ensure CRPIX is on input image. [10346] Other Changes and Additions --------------------------- - The way in which users can specify whether to build astropy against existing installations of C libraries rather than the bundled one has changed, and should now be done via environment variables rather than setup.py flags (e.g. --use-system-erfa). The available variables are ``ASTROPY_USE_SYSTEM_CFITSIO``, ``ASTROPY_USE_SYSTEM_ERFA``, ``ASTROPY_USE_SYSTEM_EXPAT``, ``ASTROPY_USE_SYSTEM_WCSLIB``, and ``ASTROPY_USE_SYSTEM_ALL``. These should be set to ``1`` to build against the system libraries. [9730] - The infrastructure of the package has been updated in line with the APE 17 roadmap (https://github.com/astropy/astropy-APEs/blob/master/APE17.rst). The main changes are that the ``python setup.py test`` and ``python setup.py build_docs`` commands will no longer work. The easiest way to replicate these commands is to install the tox (https://tox.readthedocs.io) package and run ``tox -e test`` and ``tox -e build_docs``. It is also possible to run pytest and sphinx directly. Other significant changes include switching to setuptools_scm to manage the version number, and adding a ``pyproject.toml`` to opt in to isolated builds as described in PEP 517/518. [9726] - Bundled ``expat`` is updated to version 2.2.9. [10038] - Increase minimum asdf version to 2.6.0. [10189] - The bundled version of PLY was updated to 3.11. [10258] - Removed dependency on scikit-image. [10214] ``` ### 4.0.5 ``` ================== Bug Fixes --------- astropy.io.fits ^^^^^^^^^^^^^^^ - Fix bug where manual fixes to invalid header cards were not preserved when saving a FITS file. [11108] - Fix parsing of RVKC header card patterns that were not recognised where multiple spaces were separating field-specifier and value like "DP1.AXIS.1: 1". [11301] - Fix misleading missing END card error when extra data are found at the end of the file. [11285] - Fix incorrect wrapping of long card values as CONTINUE cards when some words in the value are longer than a single card. [11304] astropy.io.misc ^^^^^^^^^^^^^^^ - Fixed problem when writing serialized metadata to HDF5 using h5py >= 3.0. With the newer h5py this was writing the metadata table as a variable-length string array instead of the previous fixed-length bytes array. Fixed astropy to force using a fixed-length bytes array. [11359] astropy.modeling ^^^^^^^^^^^^^^^^ - Change ``Voigt1D`` function to use Humlicek's approximation to avoid serious inaccuracies + option to use (compiled) ``scipy.special.wofz`` error function for yet more accurate results. [11177] astropy.table ^^^^^^^^^^^^^ - Fixed bug when initializing a ``Table`` with a column as list of ``Quantity``, for example ``Table({'x': [1*u.m, 2*u.m]})``. Previously this resulted in an ``object`` dtype with no column ``unit`` set, but now gives a float array with the corre