Log message:
py-scipy: updated to 1.11.1
SciPy 1.11.1
Issues closed for 1.11.1
BUG: run method of scipy.odr.ODR class fails when delta0 parameter...
BUG: segfault in \`scipy.linalg.lu\` on x86_64 windows and macos...
BUG: factorial return type inconsistent for 0-dim arrays
determinant of a 1x1 matrix returns an array, not a scalar
Licensing concern
Pull requests for 1.11.1
BUG: Fix work array construction for various weight shapes.
REL, MAINT: prep for 1.11.1
BUG: fix handling for \`factorial(..., exact=False)\` for 0-dim...
FIX:linalg.lu:Guard against permute_l out of bound behavior
MAINT:linalg.det:Return scalars for singleton inputs
MAINT: fix unuran licensing
SciPy 1.11.0 is the culmination of 6 months of hard work. It contains
many new features, numerous bug-fixes, improved test coverage and better
documentation. There have been a number of deprecations and API changes
in this release, which are documented below. All users are encouraged to
upgrade to this release, as there are a large number of bug-fixes and
optimizations. 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.11.x branch, and on adding new features on the main branch.
This release requires Python 3.9+ and NumPy 1.21.6 or greater.
For running on PyPy, PyPy3 6.0+ is required.
**************************
Highlights of this release
**************************
- Several `scipy.sparse` array API improvements, including `sparse.sparray`, a new
public base class distinct from the older `sparse.spmatrix` class,
proper 64-bit index support, and numerous deprecations paving the way to a
modern sparse array experience.
- `scipy.stats` added tools for survival analysis, multiple hypothesis testing,
sensitivity analysis, and working with censored data.
- A new function was added for quasi-Monte Carlo integration, and linear
algebra functions ``det`` and ``lu`` now accept nD-arrays.
- An ``axes`` argument was added broadly to ``ndimage`` functions, facilitating
analysis of stacked image data.
************
New features
************
`scipy.integrate` improvements
==============================
- Added `scipy.integrate.qmc_quad` for quasi-Monte Carlo integration.
- For an even number of points, `scipy.integrate.simpson` now calculates
a parabolic segment over the last three points which gives improved
accuracy over the previous implementation.
`scipy.cluster` improvements
============================
- ``disjoint_set`` has a new method ``subset_size`` for providing the size
of a particular subset.
`scipy.constants` improvements
================================
- The ``quetta``, ``ronna``, ``ronto``, and ``quecto`` SI prefixes were added.
`scipy.linalg` improvements
===========================
- `scipy.linalg.det` is improved and now accepts nD-arrays.
- `scipy.linalg.lu` is improved and now accepts nD-arrays. With the new
``p_indices`` switch the output permutation argument can be 1D ``(n,)``
permutation index instead of the full ``(n, n)`` array.
`scipy.ndimage` improvements
============================
- ``axes`` argument was added to ``rank_filter``, ``percentile_filter``,
``median_filter``, ``uniform_filter``, ``minimum_filter``,
``maximum_filter``, and ``gaussian_filter``, which can be useful for
processing stacks of image data.
`scipy.optimize` improvements
=============================
- `scipy.optimize.linprog` now passes unrecognized options directly to HiGHS.
- `scipy.optimize.root_scalar` now uses Newton's method to be used without
providing ``fprime`` and the ``secant`` method to be used without a second
guess.
- `scipy.optimize.lsq_linear` now accepts ``bounds`` arguments of type
`scipy.optimize.Bounds`.
- `scipy.optimize.minimize` ``method='cobyla'`` now supports simple bound
constraints.
- Users can opt into a new callback interface for most methods of
`scipy.optimize.minimize`: If the provided callback callable accepts
a single keyword argument, ``intermediate_result``, `scipy.optimize.minimize`
now passes both the current solution and the optimal value of the objective
function to the callback as an instance of `scipy.optimize.OptimizeResult`.
It also allows the user to terminate optimization by raising a
``StopIteration`` exception from the callback function.
`scipy.optimize.minimize` will return normally, and the latest solution
information is provided in the result object.
- `scipy.optimize.curve_fit` now supports an optional ``nan_policy`` argument.
- `scipy.optimize.shgo` now has parallelization with the ``workers`` argument,
symmetry arguments that can improve performance, class-based design to
improve usability, and generally improved performance.
`scipy.signal` improvements
===========================
- ``istft`` has an improved warning message when the NOLA condition fails.
`scipy.sparse` improvements
===========================
- A new public base class `scipy.sparse.sparray` was introduced, allowing further
extension of the sparse array API (such as the support for 1-dimensional
sparse arrays) without breaking backwards compatibility.
`isinstance(x, scipy.sparse.sparray)` to select the new sparse array classes,
while `isinstance(x, scipy.sparse.spmatrix)` selects only the old sparse
matrix classes.
- Division of sparse arrays by a dense array now returns sparse arrays.
- `scipy.sparse.isspmatrix` now only returns `True` for the sparse matrices \
instances.
`scipy.sparse.issparse` now has to be used instead to check for instances of sparse
arrays or instances of sparse matrices.
- Sparse arrays constructed with int64 indices will no longer automatically
downcast to int32.
- The ``argmin`` and ``argmax`` methods now return the correct result when explicit
zeros are present.
`scipy.sparse.linalg` improvements
==================================
- dividing ``LinearOperator`` by a number now returns a
``_ScaledLinearOperator``
- ``LinearOperator`` now supports right multiplication by arrays
- ``lobpcg`` should be more efficient following removal of an extraneous
QR decomposition.
`scipy.spatial` improvements
============================
- Usage of new C++ backend for additional distance metrics, the majority of
which will see substantial performance improvements, though a few minor
regressions are known. These are focused on distances between boolean
arrays.
`scipy.special` improvements
============================
- The factorial functions ``factorial``, ``factorial2`` and ``factorialk``
were made consistent in their behavior (in terms of dimensionality,
errors etc.). Additionally, ``factorial2`` can now handle arrays with
``exact=True``, and ``factorialk`` can handle arrays.
`scipy.stats` improvements
==========================
New Features
------------
- `scipy.stats.sobol_indices`, a method to compute Sobol' sensitivity indices.
- `scipy.stats.dunnett`, which performs Dunnett's test of the means of multiple
experimental groups against the mean of a control group.
- `scipy.stats.ecdf` for computing the empirical CDF and complementary
CDF (survival function / SF) from uncensored or right-censored data. This
function is also useful for survival analysis / Kaplan-Meier estimation.
- `scipy.stats.logrank` to compare survival functions underlying samples.
- `scipy.stats.false_discovery_control` for adjusting p-values to control the
false discovery rate of multiple hypothesis tests using the
Benjamini-Hochberg or Benjamini-Yekutieli procedures.
- `scipy.stats.CensoredData` to represent censored data. It can be used as
input to the ``fit`` method of univariate distributions and to the new
``ecdf`` function.
- Filliben's goodness of fit test as ``method='Filliben'`` of
`scipy.stats.goodness_of_fit`.
- `scipy.stats.ttest_ind` has a new method, ``confidence_interval`` for
computing a confidence interval of the difference between means.
- `scipy.stats.MonteCarloMethod`, `scipy.stats.PermutationMethod`, and
`scipy.stats.BootstrapMethod` are new classes to configure resampling and/or
Monte Carlo versions of hypothesis tests. They can currently be used with
`scipy.stats.pearsonr`.
|
Log message:
py-scipy: updated to 1.10.1
SciPy 1.10.1 is a bug-fix release with no new features
compared to 1.10.0.
SciPy 1.10.0 Release Notes
==========================
SciPy 1.10.0 is the culmination of 6 months of hard work. It contains
many new features, numerous bug-fixes, improved test coverage and better
documentation. There have been a number of deprecations and API changes
in this release, which are documented below. All users are encouraged to
upgrade to this release, as there are a large number of bug-fixes and
optimizations. 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.10.x branch, and on adding new features on the main branch.
This release requires Python 3.8+ and NumPy 1.19.5 or greater.
For running on PyPy, PyPy3 6.0+ is required.
**************************
Highlights of this release
**************************
- A new dedicated datasets submodule (`scipy.datasets`) has been added, and is
now preferred over usage of `scipy.misc` for dataset retrieval.
- A new `scipy.interpolate.make_smoothing_spline` function was added. This
function constructs a smoothing cubic spline from noisy data, using the
generalized cross-validation (GCV) criterion to find the tradeoff between
smoothness and proximity to data points.
- `scipy.stats` has three new distributions, two new hypothesis tests, three
new sample statistics, a class for greater control over calculations
involving covariance matrices, and many other enhancements.
************
New features
************
`scipy.datasets` introduction
=============================
- A new dedicated ``datasets`` submodule has been added. The submodules
is meant for datasets that are relevant to other SciPy submodules ands
content (tutorials, examples, tests), as well as contain a curated
set of datasets that are of wider interest. As of this release, all
the datasets from `scipy.misc` have been added to `scipy.datasets`
(and deprecated in `scipy.misc`).
- The submodule is based on [Pooch](https://www.fatiando.org/pooch/latest/)
(a new optional dependency for SciPy), a Python package to simplify fetching
data files. This move will, in a subsequent release, facilitate SciPy
to trim down the sdist/wheel sizes, by decoupling the data files and
moving them out of the SciPy repository, hosting them externally and
downloading them when requested. After downloading the datasets once,
the files are cached to avoid network dependence and repeated usage.
- Added datasets from ``scipy.misc``: `scipy.datasets.face`,
`scipy.datasets.ascent`, `scipy.datasets.electrocardiogram`
- Added download and caching functionality:
- `scipy.datasets.download_all`: a function to download all the `scipy.datasets`
associated files at once.
- `scipy.datasets.clear_cache`: a simple utility function to clear cached dataset
files from the file system.
- ``scipy/datasets/_download_all.py`` can be run as a standalone script for
packaging purposes to avoid any external dependency at build or test time.
This can be used by SciPy packagers (e.g., for Linux distros) which may
have to adhere to rules that forbid downloading sources from external
repositories at package build time.
`scipy.integrate` improvements
==============================
- Added parameter ``complex_func`` to `scipy.integrate.quad`, which can be set
``True`` to integrate a complex integrand.
`scipy.interpolate` improvements
================================
- `scipy.interpolate.interpn` now supports tensor-product interpolation methods
(``slinear``, ``cubic``, ``quintic`` and ``pchip``)
- Tensor-product interpolation methods (``slinear``, ``cubic``, ``quintic`` and
``pchip``) in `scipy.interpolate.interpn` and
`scipy.interpolate.RegularGridInterpolator` now allow values with trailing
dimensions.
- `scipy.interpolate.RegularGridInterpolator` has a new fast path for
``method="linear"`` with 2D data, and ``RegularGridInterpolator`` is now
easier to subclass
- `scipy.interpolate.interp1d` now can take a single value for non-spline
methods.
- A new ``extrapolate`` argument is available to \
`scipy.interpolate.BSpline.design_matrix`,
allowing extrapolation based on the first and last intervals.
- A new function `scipy.interpolate.make_smoothing_spline` has been added. It is an
implementation of the generalized cross-validation spline smoothing
algorithm. The ``lam=None`` (default) mode of this function is a clean-room
reimplementation of the classic ``gcvspl.f`` Fortran algorithm for
constructing GCV splines.
- A new ``method="pchip"`` mode was aded to
`scipy.interpolate.RegularGridInterpolator`. This mode constructs an
interpolator using tensor products of C1-continuous monotone splines
(essentially, a `scipy.interpolate.PchipInterpolator` instance per
dimension).
`scipy.sparse.linalg` improvements
==================================
- The spectral 2-norm is now available in `scipy.sparse.linalg.norm`.
- The performance of `scipy.sparse.linalg.norm` for the default case (Frobenius
norm) has been improved.
- LAPACK wrappers were added for ``trexc`` and ``trsen``.
- The `scipy.sparse.linalg.lobpcg` algorithm was rewritten, yielding
the following improvements:
- a simple tunable restart potentially increases the attainable
accuracy for edge cases,
- internal postprocessing runs one final exact Rayleigh-Ritz method
giving more accurate and orthonormal eigenvectors,
- output the computed iterate with the smallest max norm of the residual
and drop the history of subsequent iterations,
- remove the check for ``LinearOperator`` format input and thus allow
a simple function handle of a callable object as an input,
- better handling of common user errors with input data, rather
than letting the algorithm fail.
`scipy.linalg` improvements
===========================
- `scipy.linalg.lu_factor` now accepts rectangular arrays instead of being restricted
to square arrays.
`scipy.ndimage` improvements
============================
- The new `scipy.ndimage.value_indices` function provides a time-efficient method to
search for the locations of individual values with an array of image data.
- A new ``radius`` argument is supported by `scipy.ndimage.gaussian_filter1d` and
`scipy.ndimage.gaussian_filter` for adjusting the kernel size of the filter.
`scipy.optimize` improvements
=============================
- `scipy.optimize.brute` now coerces non-iterable/single-value ``args`` into a
tuple.
- `scipy.optimize.least_squares` and `scipy.optimize.curve_fit` now accept
`scipy.optimize.Bounds` for bounds constraints.
- Added a tutorial for `scipy.optimize.milp`.
- Improved the pretty-printing of `scipy.optimize.OptimizeResult` objects.
- Additional options (``parallel``, ``threads``, ``mip_rel_gap``) can now
be passed to `scipy.optimize.linprog` with ``method='highs'``.
`scipy.signal` improvements
===========================
- The new window function `scipy.signal.windows.lanczos` was added to compute a
Lanczos window, also known as a sinc window.
`scipy.sparse.csgraph` improvements
===================================
- the performance of `scipy.sparse.csgraph.dijkstra` has been improved, and
star graphs in particular see a marked performance improvement
`scipy.special` improvements
============================
- The new function `scipy.special.powm1`, a ufunc with signature
``powm1(x, y)``, computes ``x**y - 1``. The function avoids the loss of
precision that can result when ``y`` is close to 0 or when ``x`` is close to
1.
- `scipy.special.erfinv` is now more accurate as it leverages the Boost \
equivalent under
the hood.
`scipy.stats` improvements
==========================
- Added `scipy.stats.goodness_of_fit`, a generalized goodness-of-fit test for
use with any univariate distribution, any combination of known and unknown
parameters, and several choices of test statistic (Kolmogorov-Smirnov,
Cramer-von Mises, and Anderson-Darling).
- Improved `scipy.stats.bootstrap`: Default method ``'BCa'`` now supports
multi-sample statistics. Also, the bootstrap distribution is returned in the
result object, and the result object can be passed into the function as
parameter ``bootstrap_result`` to add additional resamples or change the
confidence interval level and type.
- Added maximum spacing estimation to `scipy.stats.fit`.
- Added the Poisson means test ("E-test") as \
`scipy.stats.poisson_means_test`.
- Added new sample statistics.
- Added `scipy.stats.contingency.odds_ratio` to compute both the conditional
and unconditional odds ratios and corresponding confidence intervals for
2x2 contingency tables.
- Added `scipy.stats.directional_stats` to compute sample statistics of
n-dimensional directional data.
- Added `scipy.stats.expectile`, which generalizes the expected value in the
same way as quantiles are a generalization of the median.
- Added new statistical distributions.
- Added `scipy.stats.uniform_direction`, a multivariate distribution to
sample uniformly from the surface of a hypersphere.
- Added `scipy.stats.random_table`, a multivariate distribution to sample
uniformly from m x n contingency tables with provided marginals.
- Added `scipy.stats.truncpareto`, the truncated Pareto distribution.
- Improved the ``fit`` method of several distributions.
- `scipy.stats.skewnorm` and `scipy.stats.weibull_min` now use an analytical
solution when ``method='mm'``, which also serves a starting guess to
improve the performance of ``method='mle'``.
- `scipy.stats.gumbel_r` and `scipy.stats.gumbel_l`: analytical maximum
likelihood estimates have been extended to the cases in which location or
scale are fixed by the user.
- Analytical maximum likelihood estimates have been added for
`scipy.stats.powerlaw`.
- Improved random variate sampling of several distributions.
- Drawing multiple samples from `scipy.stats.matrix_normal`,
`scipy.stats.ortho_group`, `scipy.stats.special_ortho_group`, and
`scipy.stats.unitary_group` is faster.
- The ``rvs`` method of `scipy.stats.vonmises` now wraps to the interval
``[-np.pi, np.pi]``.
- Improved the reliability of `scipy.stats.loggamma` ``rvs`` method for small
values of the shape parameter.
- Improved the speed and/or accuracy of functions of several statistical
distributions.
- Added `scipy.stats.Covariance` for better speed, accuracy, and user control
in multivariate normal calculations.
- `scipy.stats.skewnorm` methods ``cdf``, ``sf``, ``ppf``, and ``isf``
methods now use the implementations from Boost, improving speed while
maintaining accuracy. The calculation of higher-order moments is also
faster and more accurate.
- `scipy.stats.invgauss` methods ``ppf`` and ``isf`` methods now use the
implementations from Boost, improving speed and accuracy.
- `scipy.stats.invweibull` methods ``sf`` and ``isf`` are more accurate for
small probability masses.
- `scipy.stats.nct` and `scipy.stats.ncx2` now rely on the implementations
from Boost, improving speed and accuracy.
- Implemented the ``logpdf`` method of `scipy.stats.vonmises` for reliability
in extreme tails.
- Implemented the ``isf`` method of `scipy.stats.levy` for speed and
accuracy.
- Improved the robustness of `scipy.stats.studentized_range` for large ``df``
by adding an infinite degree-of-freedom approximation.
- Added a parameter ``lower_limit`` to `scipy.stats.multivariate_normal`,
allowing the user to change the integration limit from -inf to a desired
value.
- Improved the robustness of ``entropy`` of `scipy.stats.vonmises` for large
concentration values.
- Enhanced `scipy.stats.gaussian_kde`.
- Added `scipy.stats.gaussian_kde.marginal`, which returns the desired
marginal distribution of the original kernel density estimate distribution.
- The ``cdf`` method of `scipy.stats.gaussian_kde` now accepts a
``lower_limit`` parameter for integrating the PDF over a rectangular region.
- Moved calculations for `scipy.stats.gaussian_kde.logpdf` to Cython,
improving speed.
- The global interpreter lock is released by the ``pdf`` method of
`scipy.stats.gaussian_kde` for improved multithreading performance.
- Replaced explicit matrix inversion with Cholesky decomposition for speed
and accuracy.
- Enhanced the result objects returned by many `scipy.stats` functions
- Added a ``confidence_interval`` method to the result object returned by
`scipy.stats.ttest_1samp` and `scipy.stats.ttest_rel`.
- The `scipy.stats` functions ``combine_pvalues``, ``fisher_exact``,
``chi2_contingency``, ``median_test`` and ``mood`` now return
bunch objects rather than plain tuples, allowing attributes to be
accessed by name.
- Attributes of the result objects returned by ``multiscale_graphcorr``,
``anderson_ksamp``, ``binomtest``, ``crosstab``, ``pointbiserialr``,
``spearmanr``, ``kendalltau``, and ``weightedtau`` have been renamed to
``statistic`` and ``pvalue`` for consistency throughout `scipy.stats`.
Old attribute names are still allowed for backward compatibility.
- `scipy.stats.anderson` now returns the parameters of the fitted
distribution in a `scipy.stats._result_classes.FitResult` object.
- The ``plot`` method of `scipy.stats._result_classes.FitResult` now accepts
a ``plot_type`` parameter; the options are ``'hist'`` (histogram, default),
``'qq'`` (Q-Q plot), ``'pp'`` (P-P plot), and ``'cdf'`` (empirical CDF
plot).
- Kolmogorov-Smirnov tests (e.g. `scipy.stats.kstest`) now return the
location (argmax) at which the statistic is calculated and the variant
of the statistic used.
- Improved the performance of several `scipy.stats` functions.
- Improved the performance of `scipy.stats.cramervonmises_2samp` and
`scipy.stats.ks_2samp` with ``method='exact'``.
- Improved the performance of `scipy.stats.siegelslopes`.
- Improved the performance of `scipy.stats.mstats.hdquantile_sd`.
- Improved the performance of `scipy.stats.binned_statistic_dd` for several
NumPy statistics, and binned statistics methods now support complex data.
- Added the ``scramble`` optional argument to `scipy.stats.qmc.LatinHypercube`.
It replaces ``centered``, which is now deprecated.
- Added a parameter ``optimization`` to all `scipy.stats.qmc.QMCEngine`
subclasses to improve characteristics of the quasi-random variates.
- Added tie correction to `scipy.stats.mood`.
- Added tutorials for resampling methods in `scipy.stats`.
- `scipy.stats.bootstrap`, `scipy.stats.permutation_test`, and
`scipy.stats.monte_carlo_test` now automatically detect whether the provided
``statistic`` is vectorized, so passing the ``vectorized`` argument
explicitly is no longer required to take advantage of vectorized statistics.
- Improved the speed of `scipy.stats.permutation_test` for permutation types
``'samples'`` and ``'pairings'``.
- Added ``axis``, ``nan_policy``, and masked array support to
`scipy.stats.jarque_bera`.
- Added the ``nan_policy`` optional argument to `scipy.stats.rankdata`.
*******************
Deprecated features
*******************
- `scipy.misc` module and all the methods in ``misc`` are deprecated in v1.10
and will be completely removed in SciPy v2.0.0. Users are suggested to
utilize the `scipy.datasets` module instead for the dataset methods.
- `scipy.stats.qmc.LatinHypercube` parameter ``centered`` has been deprecated.
It is replaced by the ``scramble`` argument for more consistency with other
QMC engines.
- `scipy.interpolate.interp2d` class has been deprecated. The docstring of the
deprecated routine lists recommended replacements.
********************
Expired Deprecations
********************
- There is an ongoing effort to follow through on long-standing deprecations.
- The following previously deprecated features are affected:
- Removed ``cond`` & ``rcond`` kwargs in ``linalg.pinv``
- Removed wrappers ``scipy.linalg.blas.{clapack, flapack}``
- Removed ``scipy.stats.NumericalInverseHermite`` and removed ``tol`` & \
``max_intervals`` kwargs from ``scipy.stats.sampling.NumericalInverseHermite``
- Removed ``local_search_options`` kwarg frrom ``scipy.optimize.dual_annealing``.
*************
Other changes
*************
- `scipy.stats.bootstrap`, `scipy.stats.permutation_test`, and
`scipy.stats.monte_carlo_test` now automatically detect whether the provided
``statistic`` is vectorized by looking for an ``axis`` parameter in the
signature of ``statistic``. If an ``axis`` parameter is present in
``statistic`` but should not be relied on for vectorized calls, users must
pass option ``vectorized==False`` explicitly.
- `scipy.stats.multivariate_normal` will now raise a ``ValueError`` when the
covariance matrix is not positive semidefinite, regardless of which method
is called.
|