pylops.signalprocessing.Sliding3D#

class pylops.signalprocessing.Sliding3D(Op, dims, dimsd, nwin, nover, nop, tapertype='hanning', savetaper=True, nproc=1, name='P')[source]#

3D Sliding transform operator.w

Apply a transform operator Op repeatedly to patches of the model vector in forward mode and patches of the data vector in adjoint mode. More specifically, in forward mode the model vector is divided into patches each patch is transformed, and patches are then recombined in a sliding window fashion. Both model and data should be 3-dimensional arrays in nature as they are internally reshaped and interpreted as 3-dimensional arrays. Each patch contains in fact a portion of the array in the first and second dimensions (and the entire third dimension).

This operator can be used to perform local, overlapping transforms (e.g., pylops.signalprocessing.FFTND or pylops.signalprocessing.Radon3D) of 3-dimensional arrays.

Note

The shape of the model has to be consistent with the number of windows for this operator not to return an error. As the number of windows depends directly on the choice of nwin and nover, it is recommended to first run sliding3d_design to obtain the corresponding dims and number of windows.

Note

Two kind of operators Op can be provided: the first applies a single transformation to each window separately; the second applies the transformation to all of the windows at the same time. This is directly inferred during initialization when the following condition holds Op.shape[1] == np.prod(dims).

Warning

Depending on the choice of nwin and nover as well as the size of the data, sliding windows may not cover the entire data. The start and end indices of each window will be displayed and returned with running sliding3d_design.

Parameters
Oppylops.LinearOperator

Transform operator

dimstuple

Shape of 3-dimensional model. Note that dims[0] and dims[1] should be multiple of the model sizes of the transform in the first and second dimensions

dimsdtuple

Shape of 3-dimensional data

nwintuple

Number of samples of window

novertuple

Number of samples of overlapping part of window

noptuple

Number of samples in axes of transformed domain associated to spatial axes in the data

tapertypestr, optional

Type of taper (hanning, cosine, cosinesquare or None)

savetaperbool, optional

New in version 2.3.0.

Save all tapers and apply them in one go (True) or save unique tapers and apply them one by one (False). The first option is more computationally efficient, whilst the second is more memory efficient.

nprocint, optional

Deprecated, will be removed in v3.0.0. Simply kept for back-compatibility with previous implementation

namestr, optional

New in version 2.0.0.

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

Returns
Soppylops.LinearOperator

Sliding operator

Raises
ValueError

Identified number of windows is not consistent with provided model shape (dims).

Methods

__init__(Op, dims, dimsd, nwin, nover, nop)

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.Sliding3D#

1D, 2D and 3D Sliding

1D, 2D and 3D Sliding