Releases: PyLops/pylops
Releases · PyLops/pylops
v2.5.0
- Added
cudaengine topylops.waveeqprocessing.Kirchhoffoperator - Added
Opbasisandoptimal_coefftopylops.optimization.cls_sparsity.OMP - Added
solverto the input parameters of the_oneshotinternal methods ofpylops.waveeqprocessing.AcousticWave2Dto avoid recreating it for every shot - Added
kwargs_ffttopylops.signalprocessing.FFT,pylops.signalprocessing.FFT2D, andpylops.signalprocessing.FFTND - Fix bug in
pylops.waveeqprocessing.MDDwhen using CuPy arrays forGanddwithtwosided=Trueandadd_negative=True - Fix bug in
pylops.signalprocessing.FourierRadon3Din the default choice ofnum_threads_per_blocks - Fix bug in
pylops.signalprocessing.Convolve1Din the definition ofpadandpaddwhen applying the operator to a CuPy array - Fix bug in
pylops.optimization.cls_sparsity.OMPavoiding passingexplicitin the creation of_ColumnLinearOperator - Fix bug in
pylops.optimization.cls_sparsity.OMPcallback method ascolswas not passed not allowingxto be properly reconstructed - Fix bug in
pylops.waveeqprocessing.SeismicInterpolationin calculation ofsamplingwhen not passed
v2.4.0
- Added
pylops.signalprocessing.FourierRadon2dand
pylops.signalprocessing.FourierRadon3doperators - Added
pylops.PyTensorOperatoroperator - Added
pylops.ToCupyoperator - Added
pylops.utils.seismicevents.parabolic3dmethod - Fix bug in
pylops.Restrictionwhen passing iava as cupy array
v2.3.1
- Fixed bug in
pylops.utils.backend(see Issue #606)
v2.3.0
- Added
pylops.JaxOperator,pylops.signalprocessing.DWTND, andpylops.signalprocessing.DTCWToperators. - Added
updatesrcmethod topylops.waveeqprocessing.AcousticWave2D. - Added
verbtopylops.signalprocessing.Sliding1D.sliding1d_design,pylops.signalprocessing.Sliding2D.sliding2d_design,pylops.signalprocessing.Sliding3D.sliding3d_design,pylops.signalprocessing.Patch2D.patch2d_design, andpylops.signalprocessing.Patch3D.patch3d_design. - Added
kwargs_ffttopylops.signalprocessing.FFTND. - Added
cosinetapertopylops.utils.tapers.cosinetaper. - Added
kindtopylops.waveeqprocessing.Deghosting. - Modified all methods in
pylops.utils.backendto enable jax integration. - Modified implementations of
pylops.signalprocessing.Sliding1D,pylops.signalprocessing.Sliding2D,
pylops.signalprocessing.Sliding3D,pylops.signalprocessing.Patch2D, and
pylops.signalprocessing.Patch3Dto being directly implemented instead of relying on other PyLops operators. Added alsosavetaperparameter and an option to apply the operatorOpsimultaneously to all windows. - Modified
pylops.waveeqprocessing.AcousticWave2D._born_oneshotand
pylops.waveeqprocessing.AcousticWave2D._born_allshotsto avoid recreating the devito solver for each shot (and enabling internal caching...) - Modified
dtypeofpylops.signalprocessing.Shiftto be that of the input vector. - Modified
pylops.waveeqprocessing.BlendingContinuousto usematvec/rmatvecinstead of@/.H @for compatibility with pylops solvers. - Removed
cusignalas optional dependency andcupy's equivalent methods (since the library
is now unmantained and merged intocupy). - Fixed ImportError of optional dependencies when installed but not correctly functioning (see Issue #548)
- Fixed bug in :py:func:
pylops.utils.deps.to_cupy_conditional(see Issue #579) - Fixed bug in the definition of
nttotin :py:class:pylops.waveeqprocessing.BlendingContinuous - Fixed bug in :py:func:
pylops.utils.signalprocessing.dip_estimate(see Issue #572)
v2.2.0
- Added
pylops.signalprocessing.NonStationaryConvolve3Doperator - Added nd-array capabilities to
pylops.basicoperators.Identityandpylops.basicoperators.Zero - Added second implementation in
pylops.waveeqprocessing.BlendingContinuouswhich is more
performant when dealing with small number of receivers - Added
forceflatproperty to operators with ambiguousrmatvec(pylops.basicoperators.Block,
pylops.basicoperators.Bilinear,pylops.basicoperators.BlockDiag,pylops.basicoperators.HStack,
pylops.basicoperators.MatrixMult,pylops.basicoperators.VStack, andpylops.basicoperators.Zero) - Improved
dynamicmode ofpylops.waveeqprocessing.Kirchhoffoperator - Modified
pylops.signalprocessing.Convolve1Dto allow both filters that are both shorter and longer of the
input vector - Modified all solvers to use
matvec/rmatvecinstead of@/.H @to improve performance
v2.1.0
- Added
pylops.signalprocessing.DCT,pylops.signalprocessing.NonStationaryConvolve1D,
pylops.signalprocessing.NonStationaryConvolve2D,pylops.signalprocessing.NonStationaryFilters1D, and
pylops.signalprocessing.NonStationaryFilters2Doperators - Added
pylops.waveeqprocessing.BlendingContinuous,pylops.waveeqprocessing.BlendingGroup, and
pylops.waveeqprocessing.BlendingHalfoperators - Added
kind='datamodel'topylops.optimization.cls_sparsity.IRLS - Improved inner working of
pylops.waveeqprocessing.Kirchhoffoperator significantly
reducing the memory usage related to storing traveltime, angle, and amplitude tables. - Improved handling of
haxesinpylops.signalprocessing.Radon2Dandpylops.signalprocessing.Radon3Doperators - Added possibility to feed ND-arrays to
pylops.TorchOperator - Removed
pylops.LinearOperatorinheritance and added__call__method topylops.TorchOperator - Removed
scipy.sparse.linalg.LinearOperatorand addedabc.ABCinheritance topylops.LinearOperator - All operators are now classes of
pylops.LinearOperatortype
v2.0.0
PyLops has undergone significant changes in this release, including new LinearOperators, 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
- Multiplication of linear operators by N-dimensional arrays is now supported via the new
dims/dimsdproperties.
Users do not need to use.raveland.reshapeas often anymore. See the migration guide for more information. - Typing annotations for several submodules (
avo,basicoperators,signalprocessing,utils,optimization,waveeqprocessing) - New pylops.TorchOperator wraps a Pylops operator into a PyTorch function
- New pylops.signalprocessing.Patch3D applies a linear operator repeatedly to patches of the model vector
- Each of Sliding1D, Sliding2D, Sliding3D, Patch2D and Patch3D have an associated
slidingXd_designorpatchXd_designfunctions associated with them to aid the user in designing the windows - FirstDerivative and SecondDerivative, and therefore other derivative operators which rely on the (e.g., Gradient) support higher order stencils
- pylops.waveeqprocessing.Kirchhoff substitutes pylops.waveeqprocessing.Demigration and incorporates a variety of new functionalities
- New pylops.waveeqprocessing.AcousticWave2D wraps the Devito acoutic wave propagator providing a wave-equation based Born modeling operator with a reverse-time migration adjoint
- Solvers can now be implemented via the pylops.optimization.basesolver.Solver class. They can now be used through a functional interface with lowercase name (e.g., splitbregman) or via class interface with CamelCase name (e.g., SplitBregman). Moreover, solvers now accept callbacks defined by the Callbacks interface (see e.g., MetricsCallback).
- Metrics such as mean absolute error (mae), mean squared error (mse) and others
- New pylops.utils.signalprocessing.dip_estimate estimates local dips in an image (measured in radians) in a stabler way than pylops.utils.signalprocessing.dip_estimate did for slopes.
- New pylops.utils.tapers.tapernd for N dimensional tapers
- New wavelets Klauder and Ormsby
Documentation
- Installation has been revamped
- Revamped guide on how to implement a new
LinearOperatorfrom scratch - New guide on how to implement a new solver from scratch
- New tutorials:
- New gallery examples:
v1.18.3
- Fixed
pylops.optimization.basic.lsqr,pylops.optimization.sparsity.ISTA, and
pylops.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. - Fixed bug in
pylops.waveeqprocessing.Deghostingintroduced in
commit 7e596d4
v1.18.2
- Added
NMOexample to gallery - Extended
pylops.basicoperators.Laplacianto N-dimensional arrays - Added
forwardkind topylops.basicoperators.SecondDerivativeand
pylops.basicoperators.Laplacian - Added
chirp-slidingkind topylops.waveeqprocessing.seismicinterpolation.SeismicInterpolation - Fixed bug due to the new internal structure of
LinearOperatorsubmodule introduced inscipy1.8.0
v1.18.0
- Added
NMOexample to gallery - Extended
pylops.basicoperators.Laplacianto N-dimensional arrays - Added
forwardkind topylops.basicoperators.SecondDerivativeand
pylops.basicoperators.Laplacian - Added
chirp-slidingkind topylops.waveeqprocessing.seismicinterpolation.SeismicInterpolation - Fixed bug due to the new internal structure of
LinearOperatorsubmodule introduced inscipy1.8.0