pylops.avo.prestack.PrestackInversion(data, theta, wav, m0=None, linearization='akirich', explicit=False, simultaneous=False, epsI=None, epsR=None, dottest=False, returnres=False, epsRL1=None, kind='centered', vsvp=0.5, **kwargs_solver)[source]#

Pre-stack linearized seismic inversion.

Invert pre-stack seismic operator to retrieve a set of elastic property profiles from band-limited seismic pre-stack data (i.e., angle gathers). Depending on the choice of input parameters, inversion can be trace-by-trace with explicit operator or global with either explicit or linear operator.


Band-limited seismic post-stack data of size \([(n_\text{lins} \times) \, n_{t_0} \times n_{\theta} \, (\times n_x \times n_y)]\)


Incident angles in degrees


Wavelet in time domain (must had odd number of elements and centered to zero)

m0np.ndarray, optional

Background model of size \([n_{t_0} \times n_{m} \,(\times n_x \times n_y)]\)

linearization{“akirich”, “fatti”, “PS”} or list, optional
explicitbool, optional

Create a chained linear operator (False, preferred for large data) or a MatrixMult linear operator with dense matrix (True, preferred for small data)

simultaneousbool, optional

Simultaneously invert entire data (True) or invert trace-by-trace (False) when using explicit operator (note that the entire data is always inverted when working with linear operator)

epsIfloat or list, optional

Damping factor(s) for Tikhonov regularization term. If a list of \(n_{m}\) elements is provided, the regularization term will have different strenght for each elastic property

epsRfloat, optional

Damping factor for additional Laplacian regularization term

dottestbool, optional

Apply dot-test

returnresbool, optional

Return residuals

epsRL1float, optional

Damping factor for additional blockiness regularization term

kindstr, optional

Derivative kind (forward or centered).

vsvpfloat or np.ndarray

\(V_S/V_P\) ratio (constant or time/depth variant)


Arbitrary keyword arguments for scipy.linalg.lstsq solver (if explicit=True and epsR=None) or scipy.sparse.linalg.lsqr solver (if explicit=False and/or epsR is not None))


Inverted model of size \([n_{t_0} \times n_{m} \,(\times n_x \times n_y)]\)


Residual data (i.e., data - background data) of size \([n_{t_0} \times n_{\theta} \,(\times n_x \times n_y)]\)


The different choices of cost functions and solvers used in the seismic pre-stack inversion module follow the same convention of the seismic post-stack inversion module.

Refer to pylops.avo.poststack.PoststackInversion for more details.