seidart.simulations.multioffset module

class seidart.simulations.multioffset.LandStreamer(source_file: str, channel: str, project_file: str, receiver_file: str, receiver_indices: bool = False, single_precision: bool = True)

Bases: CommonOffset

Processing helpers for land-streamer surface-wave workflows.

Methods in this class estimate dispersion curves, cluster candidate picks, and invert simplified dispersion information into velocity models.

masw(data, sampling_rate)

Perform Multichannel Analysis of Surface Waves (MASW) on the given data.

Parameters: data (np.array): The seismic data to analyze. This should be a 2D array where each row is a channel and each column is a time point. sampling_rate (float): The sampling rate of the data in Hz.

Returns: dispersion_curve (np.array): The estimated dispersion curve. This is a 2D array where the first column is frequency and the second column is velocity.

pick_dispersion_curves(dispersion_curve, eps=0.5, min_samples=5)

Use DBSCAN to pick the dispersion curve(s) from the MASW output.

Parameters: dispersion_curve (np.array): The MASW output. This should be a 2D array where the first column is frequency and the second column is velocity. eps (float): The maximum distance between two samples for them to be considered as in the same neighborhood. min_samples (int): The number of samples in a neighborhood for a point to be considered as a core point.

Returns: labels (np.array): The labels of the clusters. Noise points are given the label -1.

tikhonov_inversion(dispersion_curve, alpha=0.1)

Use Tikhonov regularization to estimate the velocity model from the dispersion curve.

Parameters: dispersion_curve (np.array): The dispersion curve. This should be a 2D array where the first column is frequency and the second column is velocity. alpha (float): The regularization parameter.

Returns: velocity_model (np.array): The estimated velocity model.

class seidart.simulations.multioffset.MultiOffset(source_file: str, channel: str, project_file: str, receiver_file: str, receiver_indices: bool = False, single_precision: bool = True)

Bases: CommonOffset

Common-offset extension for multi-offset survey workflows.

The class is intended to coordinate multiple source-receiver offsets and normal-moveout style processing built on top of CommonOffset.

compute_nmo_correction(dt, offsets, velocities, n_estimators=10)

Use an ensemble method to compute the normal moveout (NMO) correction of seismic data.

Parameters: data (np.array): The seismic data to correct. This should be a 2D array where each row is a trace and each column is a time sample. dt (float): The sampling interval in seconds. offsets (np.array): The offsets of the traces in meters. velocities (np.array): The NMO velocities in m/s. n_estimators (int): The number of base estimators in the ensemble.

Returns: corrected_data (np.array): The NMO corrected data.

multioffset_run()

Simulate a multi-offset radar survey. The outputs for each source location are saved in a m-by-n-by-p where m is the length of the time series, n is the number of source locations, and p is the number of receivers.

The receiver file and source file must be equal length. The number of survey points is going to be the number of source locations minus the number of receivers in the streamer.

plot_nmo_performance_metrics(dt, offsets, velocities, ground_truth, n_estimators_values)

Plot the performance metrics of the compute_nmo_correction function.

Parameters: data (np.array): The seismic data to correct. This should be a 2D array where each row is a trace and each column is a time sample. dt (float): The sampling interval in seconds. offsets (np.array): The offsets of the traces in meters. velocities (np.array): The NMO velocities in m/s. ground_truth (np.array): The ground truth data to compare the corrected data to. n_estimators_values (list of int): The values of n_estimators to calculate the performance metrics for.