STALTA | R Documentation |
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.
STALTA(x, staSecs, ltaSecs, algorithm, demean, detrend, taper, increment)
x |
a |
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= |
detrend |
boolean flag determining whether to detrend the data before applying the algorithm (default= |
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). |
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).
A vector of values is returned of the same length as the data in the Trace
.
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.
Jonathan Callahan jonathan@mazamascience.com
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)
triggerOnset
## 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.