Learn R Programming

IRISSeismic (version 1.6.7)

STALTA: 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)

Value

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

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).

Author

Jonathan Callahan jonathan@mazamascience.com

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}\sum_{j=i-ns}^{i}{x_i^2} $$ $$ LTA(x_i) = \frac{1}{nl}\sum_{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}\sum_{j=i}^{i+ns}{x_i^2} $$ $$ LTA(x_i) = \frac{1}{nl}\sum_{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} \sum_{j=i}^{i+ns}{Mod(H(x))_i} $$ $$ LTA(x_i)= \frac{1}{nl} \sum_{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).

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

Run this code
if (FALSE) {
# Open a connection to EarthScope 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)
}

Run the code above in your browser using DataLab