PyLops API¶
The Application Programming Interface (API) of PyLops can be loosely seen as composed of a stack of three main layers:
- Linear operators: building blocks for the setting up of inverse problems
- Solvers: interfaces to a variety of solvers, providing an easy way to augment an inverse problem with additional regularization and/or preconditioning term
- Applications: high-level interfaces allowing users to easily setup and solve specific problems (while hiding the non-needed details - i.e., creation and setup of linear operators and solvers).
Linear operators¶
Templates¶
LinearOperator([Op, explicit, clinear]) |
Common interface for performing matrix-vector products. |
FunctionOperator(f, *args, **kwargs) |
Function Operator. |
MemoizeOperator(Op[, max_neval]) |
Memoize Operator. |
Basic operators¶
MatrixMult(A[, dims, dtype]) |
Matrix multiplication. |
Identity(N[, M, dtype, inplace]) |
Identity operator. |
Zero(N[, M, dtype]) |
Zero operator. |
Diagonal(diag[, dims, dir, dtype]) |
Diagonal operator. |
Transpose(dims, axes[, dtype]) |
Transpose operator. |
Flip(N[, dims, dir, dtype]) |
Flip along an axis. |
Roll(N[, dims, dir, shift, dtype]) |
Roll along an axis. |
Pad(dims, pad[, dtype]) |
Pad operator. |
Sum(dims, dir[, dtype]) |
Sum operator. |
Symmetrize(N[, dims, dir, dtype]) |
Symmetrize along an axis. |
Restriction(M, iava[, dims, dir, dtype, inplace]) |
Restriction (or sampling) operator. |
Regression(taxis, order[, dtype]) |
Polynomial regression. |
LinearRegression(taxis[, dtype]) |
Linear regression. |
CausalIntegration(N[, dims, dir, sampling, …]) |
Causal integration. |
Spread(dims, dimsd[, table, dtable, fh, …]) |
Spread operator. |
VStack(ops[, nproc, dtype]) |
Vertical stacking. |
HStack(ops[, nproc, dtype]) |
Horizontal stacking. |
Block(ops[, nproc, dtype]) |
Block operator. |
BlockDiag(ops[, nproc, dtype]) |
Block-diagonal operator. |
Kronecker(Op1, Op2[, dtype]) |
Kronecker operator. |
Real(dims[, dtype]) |
Real operator. |
Imag(dims[, dtype]) |
Imag operator. |
Conj(dims[, dtype]) |
Complex conjugate operator. |
Smoothing and derivatives¶
Smoothing1D(nsmooth, dims[, dir, dtype]) |
1D Smoothing. |
Smoothing2D(nsmooth, dims[, nodir, dtype]) |
2D Smoothing. |
FirstDerivative(N[, dims, dir, sampling, …]) |
First derivative. |
SecondDerivative(N[, dims, dir, sampling, …]) |
Second derivative. |
Laplacian(dims[, dirs, weights, sampling, …]) |
Laplacian. |
Gradient(dims[, sampling, edge, dtype, kind]) |
Gradient. |
FirstDirectionalDerivative(dims, v[, …]) |
First Directional derivative. |
SecondDirectionalDerivative(dims, v[, …]) |
Second Directional derivative. |
Signal processing¶
Convolve1D(N, h[, offset, dims, dir, dtype, …]) |
1D convolution operator. |
Convolve2D(N, h, dims[, offset, nodir, …]) |
2D convolution operator. |
ConvolveND(N, h, dims[, offset, dirs, …]) |
ND convolution operator. |
Interp(M, iava[, dims, dir, kind, dtype]) |
Interpolation operator. |
Bilinear(iava, dims[, dtype]) |
Bilinear interpolation operator. |
FFT(dims[, dir, nfft, sampling, norm, real, …]) |
One dimensional Fast-Fourier Transform. |
FFT2D(dims[, dirs, nffts, sampling, norm, …]) |
Two dimensional Fast-Fourier Transform. |
FFTND(dims[, dirs, nffts, sampling, norm, …]) |
N-dimensional Fast-Fourier Transform. |
Shift(dims, shift[, dir, nfft, sampling, …]) |
Shift operator |
DWT(dims[, dir, wavelet, level, dtype]) |
One dimensional Wavelet operator. |
DWT2D(dims[, dirs, wavelet, level, dtype]) |
Two dimensional Wavelet operator. |
Seislet(slopes[, sampling, level, kind, …]) |
Two dimensional Seislet operator. |
Radon2D(taxis, haxis, pxaxis[, kind, …]) |
Two dimensional Radon transform. |
Radon3D(taxis, hyaxis, hxaxis, pyaxis, pxaxis) |
Three dimensional Radon transform. |
ChirpRadon2D(taxis, haxis, pmax[, dtype]) |
2D Chirp Radon transform |
ChirpRadon3D(taxis, hyaxis, hxaxis, pmax[, …]) |
3D Chirp Radon transform |
Sliding1D(Op, dim, dimd, nwin, nover[, …]) |
1D Sliding transform operator. |
Sliding2D(Op, dims, dimsd, nwin, nover[, …]) |
2D Sliding transform operator. |
Sliding3D(Op, dims, dimsd, nwin, nover, nop) |
3D Sliding transform operator. |
Patch2D(Op, dims, dimsd, nwin, nover, nop[, …]) |
2D Patch transform operator. |
Fredholm1(G[, nz, saveGt, usematmul, dtype]) |
Fredholm integral of first kind. |
Wave-Equation processing¶
PressureToVelocity(nt, nr, dt, dr, rho, vel) |
Pressure to Vertical velocity conversion. |
UpDownComposition2D(nt, nr, dt, dr, rho, vel) |
2D Up-down wavefield composition. |
UpDownComposition3D(nt, nr, dt, dr, rho, vel) |
3D Up-down wavefield composition. |
MDC(G, nt, nv[, dt, dr, twosided, fast, …]) |
Multi-dimensional convolution. |
PhaseShift(vel, dz, nt, freq, kx[, ky, dtype]) |
Phase shift operator |
Demigration(z, x, t, srcs, recs, vel, wav, …) |
Kirchhoff Demigration operator. |
Geophysical subsurface characterization¶
avo.AVOLinearModelling(theta[, vsvp, nt0, …]) |
AVO Linearized modelling. |
poststack.PoststackLinearModelling(wav, nt0) |
Post-stack linearized seismic modelling operator. |
prestack.PrestackLinearModelling(wav, theta) |
Pre-stack linearized seismic modelling operator. |
prestack.PrestackWaveletModelling(m, theta, nwav) |
Pre-stack linearized seismic modelling operator for wavelet. |
Solvers¶
Basic¶
solver.cg(Op, y, x0[, niter, damp, tol, …]) |
Conjugate gradient |
solver.cgls(Op, y, x0[, niter, damp, tol, …]) |
Conjugate gradient least squares |
solver.lsqr(Op, y, x0[, damp, atol, btol, …]) |
LSQR |
Least-squares¶
leastsquares.NormalEquationsInversion(Op, …) |
Inversion of normal equations. |
leastsquares.RegularizedInversion(Op, Regs, data) |
Regularized inversion. |
leastsquares.PreconditionedInversion(Op, P, data) |
Preconditioned inversion. |
Sparsity¶
sparsity.IRLS(Op, data, nouter[, threshR, …]) |
Iteratively reweighted least squares. |
sparsity.OMP(Op, data[, niter_outer, …]) |
Orthogonal Matching Pursuit (OMP). |
sparsity.ISTA(Op, data, niter[, eps, alpha, …]) |
Iterative Shrinkage-Thresholding Algorithm (ISTA). |
sparsity.FISTA(Op, data, niter[, eps, …]) |
Fast Iterative Shrinkage-Thresholding Algorithm (FISTA). |
sparsity.SPGL1(Op, data[, SOp, tau, sigma, x0]) |
Spectral Projected-Gradient for L1 norm. |
sparsity.SplitBregman(Op, RegsL1, data[, …]) |
Split Bregman for mixed L2-L1 norms. |
Applications¶
Wave-Equation processing¶
SeismicInterpolation(data, nrec, iava[, …]) |
Seismic interpolation (or regularization). |
Deghosting(p, nt, nr, dt, dr, vel, zrec[, …]) |
Wavefield deghosting. |
WavefieldDecomposition(p, vz, nt, nr, dt, …) |
Up-down wavefield decomposition. |
MDD(G, d[, dt, dr, nfmax, wav, twosided, …]) |
Multi-dimensional deconvolution. |
Marchenko(R[, R1, dt, nt, dr, nfmax, wav, …]) |
Marchenko redatuming |
LSM(z, x, t, srcs, recs, vel, wav, wavcenter) |
Least-squares Migration (LSM). |
Geophysical subsurface characterization¶
poststack.PoststackInversion(data, wav[, …]) |
Post-stack linearized seismic inversion. |
prestack.PrestackInversion(data, theta, wav) |
Pre-stack linearized seismic inversion. |