Released on: 09/07/2021
- Added :py
pylops.optimization.solver.lsqr
solver - Added utility routine :py
pylops.utils.scalability_test
for scalability tests when usingmultiprocessing
- Added
pylops.avo.avo.ps
AVO modelling option and restructuredpylops.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). :py
pylops.basicoperators.Real
, :pypylops.basicoperators.Imag
, and :pypylops.basicoperators.Conj
- Added possibility to run operators :py
pylops.basicoperators.HStack
, :pypylops.basicoperators.VStack
, :pypylops.basicoperators.Block
:pypylops.basicoperators.BlockDiag
, and :pypylops.signalprocessing.Sliding3D
usingmultiprocessing
- Added dtype to vector X when using
scipy.sparse.linalg.lobpcg
in eigs method ofpylops.LinearOperator
- Use kind=forward fot FirstDerivative in :py
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 :py
pylops.optimization.solver.cg
and :pypylops.optimization.solver.cgls
to be L2 norms of residuals - Fixed :py
pylops.utils.dottest.dottest
for imaginary vectors and to ensure u and v vectors are of same dtype of the operator
Released on: 26/03/2021
- Added :py
pylops.signalprocessing.Sliding1D
and :pypylops.signalprocessing.Patch2D
operators - Added :py
pylops.basicoperators.MemoizeOperator
operator - Added decay and analysis option in :py
pylops.optimization.sparsity.ISTA
and :pypylops.optimization.sparsity.FISTA
solvers - Added toreal and toimag methods to :py
pylops.LinearOperator
- Make nr and nc optional in :py
pylops.utils.dottest.dottest
- Fixed complex check in :py
pylops.basicoperators.MatrixMult
when working with complex-valued cupy arrays - Fixed bug in data reshaping in check in :py
pylops.avo.prestack.PrestackInversion
- Fixed loading error when using old cupy and/or cusignal (see Issue #201)
Released on: 22/11/2020
- Modified all operators and solvers to work with cupy arrays
- Added
eigs
andsolver
submodules to :pypylops.optimization
- Added
deps
andbackend
submodules to :pypylops.utils
- Fixed bug in :py
pylops.signalprocessing.Convolve2D
. and :pypylops.signalprocessing.ConvolveND
. when dealing with filters that have less dimensions than the input vector.
Released on: 24/10/2020
- Fixed import of
pyfttw
when not available in :py`pylops.signalprocessing.ChirpRadon3D
Released on: 24/10/2020
- Added :py
pylops.signalprocessing.ChirpRadon2D
and :pypylops.signalprocessing.ChirpRadon3D
operators. - Fixed bug in the inferred dimensions for regularization data creation in :py
pylops.optimization.leastsquares.NormalEquationsInversion
, :pypylops.optimization.leastsquares.RegularizedInversion
, and :pypylops.optimization.sparsity.SplitBregman
. - Changed dtype of :py
pylops.HStack
to allow automatic inference from dtypes of input operator. - Modified dtype of :py
pylops.waveeqprocessing.Marchenko
operator to ensure that outputs of forward and adjoint are real arrays. - Reverted to previous complex-friendly implementation of :py
pylops.optimization.sparsity._softthreshold
to avoid division by 0.
Released on: 13/08/2020
- Added
tosparse
method to :pypylops.LinearOperator
. - Added
kind=linear
in :pypylops.signalprocessing.Seislet
operator. - Added
kind
to :pypylops.FirstDerivative
. operator to perform forward and backward (as well as centered) derivatives. - Added
kind
to :pypylops.optimization.sparsity.IRLS
solver to choose between data or model sparsity. - Added possibility to use :py
scipy.sparse.linalg.lobpcg
in :pypylops.LinearOperator.eigs
andpylops.LinearOperator.cond
- Added possibility to use :py
scipy.signal.oaconvolve
in :pypylops.signalprocessing.Convolve1D
. - Added
NRegs
to :pypylops.optimization.leastsquares.NormalEquationsInversion
to allow providing regularization terms directly in the form ofH^T H
.
Released on: 25/05/2020
- Changed internal behaviour of :py
pylops.sparsity.OMP
whenniter_inner=0
. Automatically reverts to Matching Pursuit algorithm. - Changed handling of
dtype
in :pypylops.signalprocessing.FFT
and :pypylops.signalprocessing.FFT2D
to ensure that the type of the input vector is retained when applying forward and adjoint. - Added
dtype
parameter to theFFT
calls in the definition of the :pypylops.waveeqprocessing.MDD
operation. This ensure that the type of the real part ofG
input is enforced to the output vectors of the forward and adjoint operations.
Released on: 13/04/2020
- Added :py
pylops.waveeqprocessing.Deghosting
and :pypylops.signalprocessing.Seislet
operators - Added hard and half thresholds in :py
pylops.optimization.sparsity.ISTA
and :pypylops.optimization.sparsity.FISTA
solvers - Added
prescaled
input parameter to :pypylops.waveeqprocessing.MDC
and :pypylops.waveeqprocessing.Marchenko
- Added sinc interpolation to :py
pylops.signalprocessing.Interp
(kind == 'sinc'
) - Modified
pylops.waveeqprocessing.marchenko.directwave
to to model analytical responses from both sources of volume injection (derivative=False
) and source of volume injection rate (derivative=True
) - Added :py
pylops.LinearOperator.asoperator
method to :pypylops.LinearOperator
- Added :py
pylops.utils.signalprocessing.slope_estimate
function - Fix bug in :py
pylops.signalprocessing.Radon2D
and :pypylops.signalprocessing.Radon3D
whenonthefly=True
returning the same result as whenonthefly=False
Released on: 12/01/2020
- Added :py
pylops.LinearOperator.todense
method to :pypylops.LinearOperator
- Added :py
pylops.signalprocessing.Bilinear
, :pypylops.signalprocessing.DWT
, and :pypylops.signalprocessing.DWT2
operators - Added :py
pylops.waveeqprocessing.PressureToVelocity
, :pypylops.waveeqprocessing.UpDownComposition3Doperator
, and :pypylops.waveeqprocessing.PhaseShift
operators - Fix bug in :py
pylops.basicoperators.Kronecker
(see Issue #125)
Released on: 10/11/2019
- Added :py
pylops.Gradient
, :pypylops.Sum
, :pypylops.FirstDirectionalDerivative
, and :pypylops.SecondDirectionalDerivative
operators - Added :py
pylops.LinearOperator._ColumnLinearOperator
private operator - Added possibility to directly mix Linear operators and numpy/scipy 2d arrays in :py
pylops.VStack
and :pypylops.HStack
and :pypylops.BlockDiag
operators - Added :py
pylops.optimization.sparsity.OMP
solver
Released on: 10/08/2019
- Added :py
pylops.signalprocessing.ConvolveND
operator - Added :py
pylops.utils.signalprocessing.nonstationary_convmtx
to create matrix for non-stationary convolution - Added possibility to perform seismic modelling (and inversion) with non-stationary wavelet in :py
pylops.avo.poststack.PoststackLinearModelling
- Create private methods for :py
pylops.Block
, :pypylops.avo.poststack.PoststackLinearModelling
, :pypylops.waveeqprocessing.MDC
to allow calling different operators (e.g., from pylops-distributed or pylops-gpu) within the method
Released on: 30/06/2019
- Added
conj
method to :pypylops.LinearOperator
- Added :py
pylops.Kronecker
, :pypylops.Roll
, and :pypylops.Transpose
operators - Added :py
pylops.signalprocessing.Fredholm1
operator - Added :py
pylops.optimization.sparsity.SPGL1
and :pypylops.optimization.sparsity.SplitBregman
solvers - Sped up :py
pylops.signalprocessing.Convolve1D
using :pyscipy.signal.fftconvolve
for multi-dimensional signals - Changes in implementation of :py
pylops.waveeqprocessing.MDC
and :pypylops.waveeqprocessing.Marchenko
to take advantage of primitives operators - Added
epsRL1
option to :pypylops.avo.poststack.PoststackInversion
and :pypylops.avo.prestack.PrestackInversion
to include TV-regularization terms by means of :pypylops.optimization.sparsity.SplitBregman
solver
Released on: 01/05/2019
- Added
numba
engine to :pypylops.Spread
and :pypylops.signalprocessing.Radon2D
operators - Added :py
pylops.signalprocessing.Radon3D
operator - Added :py
pylops.signalprocessing.Sliding2D
and :pypylops.signalprocessing.Sliding3D
operators - Added :py
pylops.signalprocessing.FFTND
operator - Added :py
pylops.signalprocessing.Radon3D
operator - Added
niter
option to :pypylops.LinearOperator.eigs
method - Added
show
option to :pypylops.optimization.sparsity.ISTA
and :pypylops.optimization.sparsity.FISTA
solvers - Added :py
pylops.waveeqprocessing.seismicinterpolation
, :pypylops.waveeqprocessing.waveeqdecomposition
and :pypylops.waveeqprocessing.lsm
submodules - Added tests for
engine
in various operators - Added documentation regarding usage of
pylops
Docker container
Released on: 24/02/2019
- Added
fftw
engine to :pypylops.signalprocessing.FFT
operator - Added :py
pylops.optimization.sparsity.ISTA
and :pypylops.optimization.sparsity.FISTA
sparse solvers - Added possibility to broadcast (handle multi-dimensional arrays) to :py
pylops.Diagonal
and :pypylops..Restriction
operators - Added :py
pylops.signalprocessing.Interp
operator - Added :py
pylops.Spread
operator - Added :py
pylops.signalprocessing.Radon2D
operator
Released on: 13/01/2019
- Added :py
pylops.LinearOperator.eigs
and :pypylops.LinearOperator.cond
methods to estimate estimate eigenvalues and conditioning number using scipy wrapping of ARPACK - Modified default
dtype
for all operators to befloat64
(orcomplex128
) to be consistent with default dtypes used by numpy (and scipy) for real and complex floating point numbers. - Added :py
pylops.Flip
operator - Added :py
pylops.Symmetrize
operator - Added :py
pylops.Block
operator - Added :py
pylops.Regression
operator performing polynomial regression and modified :pypylops.LinearRegression
to be a simple wrapper of :pypylops.Regression
whenorder=1
- Modified :py
pylops.MatrixMult
operator to work with both numpy ndarrays and scipy sparse matrices - Added :py
pylops.avo.prestack.PrestackInversion
routine - Added possibility to have a data weight via
Weight
input parameter to :pypylops.optimization.leastsquares.NormalEquationsInversion
and :pypylops.optimization.leastsquares.RegularizedInversion
solvers - Added :py
pylops.optimization.sparsity.IRLS
solver
Released on: 13/12/2018
- Added :py
pylops.CausalIntegration
operator
Released on: 09/12/2018
- Changed module from
lops
topylops
for consistency with library name (and pip install). - Removed quickplots from utilities and
matplotlib
from requirements of PyLops.
Released on: 04/12/2018
- First official release.