Changelog¶
Version 1.18.3¶
Released on: 30/07/2022
- Refractored
pylops.utils.dottest, and added two new optional input parameters (atol and rtol) - Added optional parameter densesolver to
pylops.LinearOperator.div - Fixed
pylops.optimization.basic.lsqr,pylops.optimization.sparsity.ISTA, andpylops.optimization.sparsity.FISTAto work with cupy arrays. This change was required by how recent cupy versions handle scalars, which are not converted directly into float types, rather kept as cupy arrays. - Fix bug in
pylops.waveeqprocessing.Deghostingintroduced in commit 7e596d4.
Version 1.18.2¶
Released on: 29/04/2022
- Refractored
pylops.utils.dottest, and added two new optional input parameters (atol and rtol) - Added optional parameter densesolver to
pylops.LinearOperator.div
Version 1.18.0¶
Released on: 19/02/2022
- Added NMO example to gallery
- Extended
pylops.Laplacianto N-dimensional arrays - Added forward kind to
pylops.SecondDerivativeandpylops.Laplacian - Added chirp-sliding kind to
pylops.waveeqprocessing.seismicinterpolation.SeismicInterpolation - Fixed bug due to the new internal structure of LinearOperator submodule introduced in scipy1.8.0
Version 1.17.0¶
Released on: 29/01/2022
- Added
pylops.utils.describe.describemethod - Added
fftenginetopylops.waveeqprocessing.Marchenko - Added
ifftshift_beforeandfftshift_afteroptional input parameters inpylops.signalprocessing.FFT - Added
normoptional input parameter topylops.signalprocessing.FFT2Dandpylops.signalprocessing.FFTND - Added
scipybackend topylops.signalprocessing.FFTandpylops.signalprocessing.FFT2Dandpylops.signalprocessing.FFTND - Added
epsoptional input parameter inpylops.utils.signalprocessing.slope_estimate - Added pre-commit hooks
- Improved pre-commit hooks
- Vectorized
pylops.utils.signalprocessing.slope_estimate - Handlexd
nfft<ntcase inpylops.signalprocessing.FFTandpylops.signalprocessing.FFT2Dandpylops.signalprocessing.FFTND - Introduced automatic casting of dtype in
pylops.MatrixMult - Improved documentation and definition of optinal parameters
of
pylops.Spread - Major clean up of documentation and mathematical formulas
- Major refractoring of the inner structure of
pylops.signalprocessing.FFTandpylops.signalprocessing.FFT2Dandpylops.signalprocessing.FFTND - Reduced warnings in test suite
- Reduced computational time of
test_wavedecompositionin the test suite - Fixed bug in
pylops.signalprocessing.Sliding1D,pylops.signalprocessing.Sliding2Dandpylops.signalprocessing.Sliding3Dwhere thedtypeof the Restriction operator is inffered fromOp - Fixed bug in
pylops.signalprocessing.Radon2Dandpylops.signalprocessing.Radon3Dwhen using centered spatial axes - Fixed scaling in
pylops.signalprocessing.FFTwithreal=Trueto pass the dot-test
Version 1.16.0¶
Released on: 11/12/2021
- Added
pylops.utils.estimatorssubmodule for trace estimation - Added x0 in
pylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAto handle non-zero initial guess - Modified
pylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAto handle multiple right hand sides - Modified creation of haxis in
pylops.signalprocessing.Radon2Dandpylops.signalprocessing.Radon3Dto allow for uncentered spatial axes - Fixed _rmatvec for explicit in
pylops.LinearOperator._ColumnLinearOperator
Version 1.15.0¶
Released on: 23/10/2021
- Added
pylops.signalprocessing.Shiftoperator. - Added option to choose derivative kind in
pylops.avo.poststack.PoststackInversionandpylops.avo.prestack.PrestackInversion. - Improved efficiency of adjoint of
pylops.signalprocessing.Fredholm1by applying complex conjugation to the vectors. - Added vsvp to
pylops.avo.prestack.PrestackInversionallowing to use user defined VS/VP ratio. - Added kind to
pylops.basicoperators.CausalIntegrationallowingfull,half, ortrapezoidalintegration. - Fixed _hardthreshold_percentile in
pylops.optimization.sparsity- Issue #249. - Fixed r2norm in
pylops.optimization.solver.cgls.
Version 1.14.0¶
Released on: 09/07/2021
- Added
pylops.optimization.solver.lsqrsolver - Added utility routine
pylops.utils.scalability_testfor scalability tests when usingmultiprocessing - Added
pylops.avo.avo.psAVO modelling option and restructuredpylops.avo.prestack.PrestackLinearModellingto 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, andpylops.basicoperators.Conj - Added possibility to run operators
pylops.basicoperators.HStack,pylops.basicoperators.VStack,pylops.basicoperators.Blockpylops.basicoperators.BlockDiag, andpylops.signalprocessing.Sliding3Dusingmultiprocessing - Added dtype to vector X when using
scipy.sparse.linalg.lobpcgin eigs method ofpylops.LinearOperator - Use kind=forward fot FirstDerivative in
pylops.avo.poststack.PoststackInversioninversion when dealing with L1 regularized inversion as it makes the inverse problem more stable (no ringing in solution) - Changed cost in
pylops.optimization.solver.cgandpylops.optimization.solver.cglsto be L2 norms of residuals - Fixed
pylops.utils.dottest.dottestfor 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
- Added
pylops.signalprocessing.Sliding1Dandpylops.signalprocessing.Patch2Doperators - Added
pylops.basicoperators.MemoizeOperatoroperator - Added decay and analysis option in
pylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAsolvers - Added toreal and toimag methods to
pylops.LinearOperator - Make nr and nc optional in
pylops.utils.dottest.dottest - Fixed complex check in
pylops.basicoperators.MatrixMultwhen working with complex-valued cupy arrays - Fixed bug in data reshaping in check in
pylops.avo.prestack.PrestackInversion - Fixed loading error when using old cupy and/or cusignal (see Issue #201)
Version 1.12.0¶
Released on: 22/11/2020
- Modified all operators and solvers to work with cupy arrays
- Added
eigsandsolversubmodules topylops.optimization - Added
depsandbackendsubmodules topylops.utils - Fixed bug in
pylops.signalprocessing.Convolve2D. andpylops.signalprocessing.ConvolveND. when dealing with filters that have less dimensions than the input vector.
Version 1.11.1¶
Released on: 24/10/2020
- Fixed import of
pyfttwwhen not available in :py:class:``pylops.signalprocessing.ChirpRadon3D`
Version 1.11.0¶
Released on: 24/10/2020
- Added
pylops.signalprocessing.ChirpRadon2Dandpylops.signalprocessing.ChirpRadon3Doperators. - Fixed bug in the inferred dimensions for regularization data creation in
pylops.optimization.leastsquares.NormalEquationsInversion,pylops.optimization.leastsquares.RegularizedInversion, andpylops.optimization.sparsity.SplitBregman. - Changed dtype of
pylops.HStackto allow automatic inference from dtypes of input operator. - Modified dtype of
pylops.waveeqprocessing.Marchenkooperator to ensure that outputs of forward and adjoint are real arrays. - Reverted to previous complex-friendly implementation of
pylops.optimization.sparsity._softthresholdto avoid division by 0.
Version 1.10.0¶
Released on: 13/08/2020
- Added
tosparsemethod topylops.LinearOperator. - Added
kind=linearinpylops.signalprocessing.Seisletoperator. - Added
kindtopylops.FirstDerivative. operator to perform forward and backward (as well as centered) derivatives. - Added
kindtopylops.optimization.sparsity.IRLSsolver to choose between data or model sparsity. - Added possibility to use
scipy.sparse.linalg.lobpcginpylops.LinearOperator.eigsandpylops.LinearOperator.cond - Added possibility to use
scipy.signal.oaconvolveinpylops.signalprocessing.Convolve1D. - Added
NRegstopylops.optimization.leastsquares.NormalEquationsInversionto allow providing regularization terms directly in the form ofH^T H.
Version 1.9.1¶
Released on: 25/05/2020
- Changed internal behaviour of
pylops.sparsity.OMPwhenniter_inner=0. Automatically reverts to Matching Pursuit algorithm. - Changed handling of
dtypeinpylops.signalprocessing.FFTandpylops.signalprocessing.FFT2Dto ensure that the type of the input vector is retained when applying forward and adjoint. - Added
dtypeparameter to theFFTcalls in the definition of thepylops.waveeqprocessing.MDDoperation. This ensure that the type of the real part ofGinput is enforced to the output vectors of the forward and adjoint operations.
Version 1.9.0¶
Released on: 13/04/2020
- Added
pylops.waveeqprocessing.Deghostingandpylops.signalprocessing.Seisletoperators - Added hard and half thresholds in
pylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAsolvers - Added
prescaledinput parameter topylops.waveeqprocessing.MDCandpylops.waveeqprocessing.Marchenko - Added sinc interpolation to
pylops.signalprocessing.Interp(kind == 'sinc') - Modified
pylops.waveeqprocessing.marchenko.directwaveto to model analytical responses from both sources of volume injection (derivative=False) and source of volume injection rate (derivative=True) - Added
pylops.LinearOperator.asoperatormethod topylops.LinearOperator - Added
pylops.utils.signalprocessing.slope_estimatefunction - Fix bug in
pylops.signalprocessing.Radon2Dandpylops.signalprocessing.Radon3Dwhenonthefly=Truereturning the same result as whenonthefly=False
Version 1.8.0¶
Released on: 12/01/2020
- Added
pylops.LinearOperator.todensemethod topylops.LinearOperator - Added
pylops.signalprocessing.Bilinear,pylops.signalprocessing.DWT, andpylops.signalprocessing.DWT2operators - Added
pylops.waveeqprocessing.PressureToVelocity,pylops.waveeqprocessing.UpDownComposition3Doperator, andpylops.waveeqprocessing.PhaseShiftoperators - Fix bug in
pylops.basicoperators.Kronecker(see Issue #125)
Version 1.7.0¶
Released on: 10/11/2019
- Added
pylops.Gradient,pylops.Sum,pylops.FirstDirectionalDerivative, andpylops.SecondDirectionalDerivativeoperators - Added
pylops.LinearOperator._ColumnLinearOperatorprivate operator - Added possibility to directly mix Linear operators and numpy/scipy
2d arrays in
pylops.VStackandpylops.HStackandpylops.BlockDiagoperators - Added
pylops.optimization.sparsity.OMPsolver
Version 1.6.0¶
Released on: 10/08/2019
- Added
pylops.signalprocessing.ConvolveNDoperator - Added
pylops.utils.signalprocessing.nonstationary_convmtxto create matrix for non-stationary convolution - Added possibility to perform seismic modelling (and inversion) with
non-stationary wavelet in
pylops.avo.poststack.PoststackLinearModelling - Create private methods for
pylops.Block,pylops.avo.poststack.PoststackLinearModelling,pylops.waveeqprocessing.MDCto allow calling different operators (e.g., from pylops-distributed or pylops-gpu) within the method
Version 1.5.0¶
Released on: 30/06/2019
- Added
conjmethod topylops.LinearOperator - Added
pylops.Kronecker,pylops.Roll, andpylops.Transposeoperators - Added
pylops.signalprocessing.Fredholm1operator - Added
pylops.optimization.sparsity.SPGL1andpylops.optimization.sparsity.SplitBregmansolvers - Sped up
pylops.signalprocessing.Convolve1Dusingscipy.signal.fftconvolvefor multi-dimensional signals - Changes in implementation of
pylops.waveeqprocessing.MDCandpylops.waveeqprocessing.Marchenkoto take advantage of primitives operators - Added
epsRL1option topylops.avo.poststack.PoststackInversionandpylops.avo.prestack.PrestackInversionto include TV-regularization terms by means ofpylops.optimization.sparsity.SplitBregmansolver
Version 1.4.0¶
Released on: 01/05/2019
- Added
numbaengine topylops.Spreadandpylops.signalprocessing.Radon2Doperators - Added
pylops.signalprocessing.Radon3Doperator - Added
pylops.signalprocessing.Sliding2Dandpylops.signalprocessing.Sliding3Doperators - Added
pylops.signalprocessing.FFTNDoperator - Added
pylops.signalprocessing.Radon3Doperator - Added
niteroption topylops.LinearOperator.eigsmethod - Added
showoption topylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAsolvers - Added
pylops.waveeqprocessing.seismicinterpolation,pylops.waveeqprocessing.waveeqdecompositionandpylops.waveeqprocessing.lsmsubmodules - Added tests for
enginein various operators - Added documentation regarding usage of
pylopsDocker container
Version 1.3.0¶
Released on: 24/02/2019
- Added
fftwengine topylops.signalprocessing.FFToperator - Added
pylops.optimization.sparsity.ISTAandpylops.optimization.sparsity.FISTAsparse solvers - Added possibility to broadcast (handle multi-dimensional arrays)
to
pylops.Diagonalandpylops..Restrictionoperators - Added
pylops.signalprocessing.Interpoperator - Added
pylops.Spreadoperator - Added
pylops.signalprocessing.Radon2Doperator
Version 1.2.0¶
Released on: 13/01/2019
- Added
pylops.LinearOperator.eigsandpylops.LinearOperator.condmethods to estimate estimate eigenvalues and conditioning number using scipy wrapping of ARPACK - Modified default
dtypefor all operators to befloat64(orcomplex128) to be consistent with default dtypes used by numpy (and scipy) for real and complex floating point numbers. - Added
pylops.Flipoperator - Added
pylops.Symmetrizeoperator - Added
pylops.Blockoperator - Added
pylops.Regressionoperator performing polynomial regression and modifiedpylops.LinearRegressionto be a simple wrapper ofpylops.Regressionwhenorder=1 - Modified
pylops.MatrixMultoperator to work with both numpy ndarrays and scipy sparse matrices - Added
pylops.avo.prestack.PrestackInversionroutine - Added possibility to have a data weight via
Weightinput parameter topylops.optimization.leastsquares.NormalEquationsInversionandpylops.optimization.leastsquares.RegularizedInversionsolvers - Added
pylops.optimization.sparsity.IRLSsolver
Version 1.0.1¶
Released on: 09/12/2018
- Changed module from
lopstopylopsfor consistency with library name (and pip install). - Removed quickplots from utilities and
matplotlibfrom requirements of PyLops.