pylops.signalprocessing.PWSprayer2D

class pylops.signalprocessing.PWSprayer2D(dims, sigma, radius=8, alpha=0.9, dtype='float64', name='P')[source]

2D Plane-Wave Sprayer.

Spray (or paint) each input value along local structural slopes in \(\pm x\) direction with exponential decay in forward mode, and gather contributions back along the same slope trajectories in adjoint mode. Together, this pair of operators defines a linear operator that propagates information preferentially along structural dips (implemented in pylops.signalprocessing.PWSmoother2D).

Parameters:
dimstuple of int

Number of samples for each dimension - (nz, nx).

sigmanumpy.ndarray

Local slope field of shape (nz, nx) defined in samples per trace (\(\Delta z / \Delta x\)).

radiusint, optional

Maximum number of steps along each \(\pm x\) direction to spray or gather. Controls the spatial extent of spreading. Default is 8.

alphafloat, optional

Geometric decay factor per step (\(0 < \alpha \leq 1\)). Higher values propagate energy farther. Default is 0.9.

dtypestr, optional

Type of elements in input array.

namestr, optional

Name of operator (to be used by pylops.utils.describe.describe)

Attributes:
dimstuple

Shape of the array after the adjoint, but before flattening.

For example, x_reshaped = (Op.H * y.ravel()).reshape(Op.dims).

dimsdtuple

Shape of the array after the forward, but before flattening. In this case, same as dims.

shapetuple

Operator shape.

See also

PWSmoother2D

Structure-aligned smoother

pwd_slope_estimate

Local slope estimation using plane-wave destruction

Notes

  • The forward operator distributes each sample along rays following local slope \(\sigma(z,x)\), using bilinear interpolation in depth.

  • The adjoint operator gathers contributions back from the same rays, making this a true linear operator pair.

  • Effective smoothing along dip grows with larger radius and higher alpha.

Methods

__init__(dims, sigma[, radius, alpha, ...])

adjoint()

apply_columns(cols)

Apply subset of columns of operator

cond([uselobpcg])

Condition number of linear operator.

conj()

Complex conjugate operator

div(y[, niter, densesolver])

Solve the linear problem \(\mathbf{y}=\mathbf{A}\mathbf{x}\).

dot(x)

Matrix-matrix or matrix-vector multiplication.

eigs([neigs, symmetric, niter, uselobpcg])

Most significant eigenvalues of linear operator.

matmat(X)

Matrix-matrix multiplication.

matvec(x)

Matrix-vector multiplication.

reset_count()

Reset counters

rmatmat(X)

Matrix-matrix multiplication.

rmatvec(x)

Adjoint matrix-vector multiplication.

todense([backend])

Return dense matrix.

toimag([forw, adj])

Imag operator

toreal([forw, adj])

Real operator

tosparse()

Return sparse matrix.

trace([neval, method, backend])

Trace of linear operator.

transpose()

Examples using pylops.signalprocessing.PWSprayer2D

PWD-based slope estimation and structural smoothing

PWD-based slope estimation and structural smoothing