STALTA: STA/LTA

STALTAR Documentation

STA/LTA

Description

The STALTA method of Trace objects applies one of several STA/LTA "first break picking" algorithms to Trace data in order to automatically detect seismic events.

Usage

STALTA(x, staSecs, ltaSecs, algorithm, demean, detrend, taper, increment)

Arguments

x

a Trace object

staSecs

length of the Short averaging window in secs (default=3)

ltaSecs

length of the Long averaging windowin secs (default=30)

algorithm

algorithm to be used (default="classic_LR")

demean

boolean flag determining whether to demean the data before applying the algorithm (default=TRUE)

detrend

boolean flag determining whether to detrend the data before applying the algorithm (default=TRUE)

taper

proportion of the signal to be tapered at each end before applying the algorithm (default=0.0)

increment

the increment to use when sliding the averaging windows to the next location (default=1).

Details

By default, this method uses the "classic_LR" algorithm which calculates the average power in the Trace data over a short window (STA) and a long window (LTA). With this algorithm, windows are "left/right aligned" meaning that the point for which STA/LTA is calculated is at the lefttmost edge of the STA window and the rightmost edge of the LTA window. The resulting STA/LTA ratio thus has the same number of points as the original data. This is a standard method of "first break picking" and can be used to identify the onset of a seismic event.

Three different algorithms are currently available:

1) algorithm="classic_RR" This is the original STA/LTA algorithm with "right alignment".

STA(x_i) = \frac{1}{ns}∑_{j=i-ns}^{i}{x_i^2}

LTA(x_i) = \frac{1}{nl}∑_{j=i-nl}^{i}{x_i^2}

r_i = \frac{STA_i}{LTA_i}

[---------- LTA ---------*]
                [-- STA -*]

2) algorithm="classic_LR" (default) This algorithm has the index at the left edge of the STA window and the right edge of the LTA window

STA(x_i) = \frac{1}{ns}∑_{j=i}^{i+ns}{x_i^2}

LTA(x_i) = \frac{1}{nl}∑_{j=i-nl}^{i}{x_i^2}

r_i = \frac{STA_i}{LTA_i}

[---------- LTA --------*]
                       [*- STA --]

3) algorithm="EarleAndShearer_envelope"

STA(x_i) = \frac{1}{ns} ∑_{j=i}^{i+ns}{Mod(H(x))_i}

LTA(x_i)= \frac{1}{nl} ∑_{j=i-nl}^{i}{Mod(H(x))_i}

r_i = \frac{STA_i}{LTA_i}

[---------- LTA ---------*]
                        [*- STA --]

where H(x) is the Hilbert transform of the data and Mod(H(x)) is the 'envelope' of the seismic signal. Note that because the Hilbert transform involves performing an FFT of the data it can take significantly longer than the "classic" algorithms for longer seismic signals (>500K pts).

Value

A vector of values is returned of the same length as the data in the Trace.

Note

The returned vector will contain NA near the edges of the trace where insufficient data are available to fill the windows. Additional NA values will appear for every index that is skipped over when the increment parameter is greater than one.

For higher resolution channels, picking an increment of 2/sampling_rate can greatly speed up processing times and still generate reasonable results.

Author(s)

Jonathan Callahan jonathan@mazamascience.com

References

First break picking (Wikipedia)

Automatic time-picking of first arrivals on large seismic datasets

Automatic first-breaks picking: New strategies and algorithms (Sabbione and Velis 2010)

Adaptive microseismic event detection and automatic time picking (Akram and Eaton 2012)

"Characterization of Global Seismograms Using an Automatic-Picking Algorithm" Bulletin of the Seismological Society of America, Vol. 84, No. 2, pp. 366-376, April 1994 (Earle and Shearer)

See Also

triggerOnset

Examples

## Not run: 
# Open a connection to IRIS DMC webservices
iris <- new("IrisClient")

starttime <- as.POSIXct("2010-02-27",tz="GMT")
endtime <- as.POSIXct("2010-02-28",tz="GMT")
  
# Get the waveform
st <- getDataselect(iris,"IU","ANMO","00","BHZ",starttime,endtime)
tr <- st@traces[[1]]
picker <- STALTA(tr,3,30)

# Plot the trace and overlay the picker
plot(tr)
par(new=TRUE)
plot(picker, type='l', col='red', axes=FALSE, xlab="", ylab="")
mtext("Picker", side=1, line=-8, adj=0.05, col='red')
par(new=FALSE)

## End(Not run)

IRISSeismic documentation built on Oct. 16, 2022, 1:09 a.m.