🗞 Changelog

Version 2.7.0

Released on: 17/05/2026

Version 2.6.0

Released on: 24/11/2025

Version 2.5.0

Released on: 21/06/2025

Version 2.4.0

Released on: 11/12/2024

Version 2.3.1

Released on: 17/08/2024

Version 2.3.0

Released on: 16/08/2024

Version 2.2.0

Released on: 11/11/2023

  • Added pylops.signalprocessing.NonStationaryConvolve3D operator

  • Added nd-array capabilities to pylops.basicoperators.Identity and pylops.basicoperators.Zero

  • Added second implementation in pylops.waveeqprocessing.BlendingContinuous which is more performant when dealing with small number of receivers

  • Added forceflat property to operators with ambiguous rmatvec (pylops.basicoperators.Block, pylops.basicoperators.Bilinear, pylops.basicoperators.BlockDiag, pylops.basicoperators.HStack, pylops.basicoperators.MatrixMult, pylops.basicoperators.VStack, and pylops.basicoperators.Zero)

  • Improved dynamic mode of pylops.waveeqprocessing.Kirchhoff operator

  • Modified pylops.signalprocessing.Convolve1D to allow both filters that are both shorter and longer of the input vector

  • Modified all solvers to use matvec/rmatvec instead of @/.H @ to improve performance

Version 2.1.0

Released on: 17/03/2023

Version 2.0.0

Released on: 12/08/2022

PyLops has undergone significant changes in this release, including new LinearOperator s, more features, new examples and bugfixes. To aid users in navigating the breaking changes, we provide the following document MIGRATION_V1_V2.md.

New Features

Documentation

Version 1.18.3

Released on: 30/07/2022

Version 1.18.2

Released on: 29/04/2022

Version 1.18.1

Released on: 29/04/2022

  • !DELETED! due to a mistake in the release process

Version 1.18.0

Released on: 19/02/2022

Version 1.17.0

Released on: 29/01/2022

Version 1.16.0

Released on: 11/12/2021

  • Added pylops.utils.estimators submodule for trace estimation

  • Added x0 in pylops.optimization.sparsity.ISTA and pylops.optimization.sparsity.FISTA to handle non-zero initial guess

  • Modified pylops.optimization.sparsity.ISTA and pylops.optimization.sparsity.FISTA to handle multiple right hand sides

  • Modified creation of haxis in pylops.signalprocessing.Radon2D and pylops.signalprocessing.Radon3D to allow for uncentered spatial axes

  • Fixed _rmatvec for explicit in pylops.LinearOperator._ColumnLinearOperator

Version 1.15.0

Released on: 23/10/2021

Version 1.14.0

Released on: 09/07/2021

  • Added pylops.optimization.solver.lsqr solver

  • Added utility routine pylops.utils.scalability_test for scalability tests when using multiprocessing

  • Added pylops.avo.avo.ps AVO modelling option and restructured pylops.avo.prestack.PrestackLinearModelling to allow passing any function handle that can perform AVO modelling apart from those directly available

  • Added R-linear operators (when setting the property clinear=False of a linear operator). pylops.basicoperators.Real, pylops.basicoperators.Imag, and pylops.basicoperators.Conj

  • Added possibility to run operators pylops.basicoperators.HStack, pylops.basicoperators.VStack, pylops.basicoperators.Block pylops.basicoperators.BlockDiag, and pylops.signalprocessing.Sliding3D using multiprocessing

  • Added dtype to vector X when using scipy.sparse.linalg.lobpcg in eigs method of pylops.LinearOperator

  • Use kind=forward fot FirstDerivative in pylops.avo.poststack.PoststackInversion inversion when dealing with L1 regularized inversion as it makes the inverse problem more stable (no ringing in solution)

  • Changed cost in pylops.optimization.solver.cg and pylops.optimization.solver.cgls to be L2 norms of residuals

  • Fixed pylops.utils.dottest.dottest for imaginary vectors and to ensure u and v vectors are of same dtype of the operator

Version 1.13.0

Released on: 26/03/2021

Version 1.12.0

Released on: 22/11/2020

Version 1.11.1

Released on: 24/10/2020

Version 1.11.0

Released on: 24/10/2020

  • Added pylops.signalprocessing.ChirpRadon2D and pylops.signalprocessing.ChirpRadon3D operators.

  • Fixed bug in the inferred dimensions for regularization data creation in pylops.optimization.leastsquares.NormalEquationsInversion, pylops.optimization.leastsquares.RegularizedInversion, and pylops.optimization.sparsity.SplitBregman.

  • Changed dtype of pylops.HStack to allow automatic inference from dtypes of input operator.

  • Modified dtype of pylops.waveeqprocessing.Marchenko operator to ensure that outputs of forward and adjoint are real arrays.

  • Reverted to previous complex-friendly implementation of pylops.optimization.sparsity._softthreshold to avoid division by 0.

Version 1.10.0

Released on: 13/08/2020

Version 1.9.1

Released on: 25/05/2020

  • Changed internal behaviour of pylops.sparsity.OMP when niter_inner=0. Automatically reverts to Matching Pursuit algorithm.

  • Changed handling of dtype in pylops.signalprocessing.FFT and pylops.signalprocessing.FFT2D to ensure that the type of the input vector is retained when applying forward and adjoint.

  • Added dtype parameter to the FFT calls in the definition of the pylops.waveeqprocessing.MDD operation. This ensure that the type of the real part of G input is enforced to the output vectors of the forward and adjoint operations.

Version 1.9.0

Released on: 13/04/2020

Version 1.8.0

Released on: 12/01/2020

Version 1.7.0

Released on: 10/11/2019

Version 1.6.0

Released on: 10/08/2019

Version 1.5.0

Released on: 30/06/2019

Version 1.4.0

Released on: 01/05/2019

Version 1.3.0

Released on: 24/02/2019

Version 1.2.0

Released on: 13/01/2019

Version 1.1.0

Released on: 13/12/2018

Version 1.0.1

Released on: 09/12/2018

  • Changed module from lops to pylops for consistency with library name (and pip install).

  • Removed quickplots from utilities and matplotlib from requirements of PyLops.

Version 1.0.0

Released on: 04/12/2018

  • First official release.