twistpy.array_processing.BeamformingArray#

class BeamformingArray(name: str = '', coordinates: Optional[ndarray] = None, reference_receiver: int = 0)[source]#

Beamforming for arbitrarily-shaped arrays.

This class serves as an interface to apply various beamforming techniques to single-component data recorded on arbitrarly-shaped arrays. It makes use of the multi-taper method for spectral estimation [1],[2]. Currently, the available beamforming methods are: BARTLETT beamforming, MVDR (Capon) beamforming, and the MUSIC algorithm.

Example usage:

# Instantiate an array object with a name and receiver coordinates
array = BeamformingArray(name='My Array', coordinates=coordinates)

# Provide waveform data to the array object:
array.add_data(data=ObsPyStream)

# Pre-compute the phase delays inside the array for a set of candidate
# plane-waves (so-called steering vectors):
array.compute_steering_vectors(frequency=50, intra_array_velocity=(2000, 3000, 100),
inclination=(0, 90, 1), azimuth=(0, 360, 1))

# Perform beamforming, which yields the estimation function P:
P = array.beamforming(method='MUSIC', eventtime = UTCDateTime, frequency_band=(45, 55),
window=5, number_of_sources=1)

Hint

[1] Meng et al. (2011). A window into the complexity of the dynamic rupture of the 2011 Mw 9 Tohoku-Oki earthquake, GRL, https://doi.org/10.1029/2011GL048118

[2] Meng et al. (2012). High-resoultion backprojection at regional distance. JGR: https://agupubs.onlinelibrary.wiley.com/doi/full/10.1029/2011JB008702

Parameters
namestr

Array name

coordinatesndarray

Coordinates of each receiver. Array of dimensions (Nx3), with N being the number of receivers

reference_receiverint

Index of receiver to use as a reference station (time delays are computed relative to this receiver). Defaults to 0 (the first receiver that is passed)

Attributes
Nint

Number of stations in the array.

dataStream

Seismic data in ObsPy format. len(data) = N

steering_vectorsndarray

Steering vectors used for beamforming.

has_databool

True if wqveform data was already added to this array object.

Methods

add_data(data)

Add data in ObsPy stream format to this instance of class BeamformingArray.

beamforming([method, event_time, ...])

Compute beam power at specified time window location for this instance of class BeamformingArray.

compute_steering_vectors(frequency[, ...])

Precompute the steering vectors

Examples using twistpy.array_processing.BeamformingArray#

Array Processing: Beamforming

Array Processing: Beamforming