v2.0.0
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
- Multiplication of linear operators by N-dimensional arrays is now supported via the new
dims
/dimsd
properties.
Users do not need to use.ravel
and.reshape
as 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_design
orpatchXd_design
functions 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
LinearOperator
from scratch - New guide on how to implement a new solver from scratch
- New tutorials:
- New gallery examples: