## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set(echo = TRUE) ## ----out.width = "600px", echo=FALSE------------------------------------------ knitr::include_graphics("rstudio-IRISSeismic.png") ## ----first, results="hide"---------------------------------------------------- library(IRISSeismic) iris <- new("IrisClient") ## ----second, fig.height=4, fig.width=5---------------------------------------- starttime <- as.POSIXct("2002-04-20", tz = "GMT") endtime <- as.POSIXct("2002-04-21", tz = "GMT") result <- try(st <- getDataselect(iris, "US", "OXF", "", "BHZ", starttime, endtime)) if (inherits(result, "try-error")) { message(geterrmessage()) } else { length(st@traces) plotUpDownTimes(st, min_signal = 1, min_gap = 1) } ## ----third-------------------------------------------------------------------- if (exists("st")) { getGaps(st) } ## ----fourth------------------------------------------------------------------- if (exists("st")) { parallelLength(st) parallelMax(st) parallelSd(st) } ## ----fifth-------------------------------------------------------------------- if (exists("st")) { tr <- st@traces[[3]] tr@stats } ## ----sixth, fig.height=4, fig.width=6----------------------------------------- if (exists("tr")) { plot(tr) } ## ----seventh------------------------------------------------------------------ if (exists("st")) { slotNames(st) } ## ----eighth------------------------------------------------------------------- if (exists("st")) { class(st@url) class(st@requestedStarttime) class(st@traces) } ## ----ninth-------------------------------------------------------------------- if (exists("st")) { slotNames(st@traces[[1]]) } ## ----include=FALSE------------------------------------------------------------ if (exists("st")) { rm(st) } if (exists("tr")) { rm(tr) } ## ----tenth-------------------------------------------------------------------- as.POSIXct("2010-02-27", tz = "GMT") # good as.POSIXct("2010-02-27 04:00:00", tz = "GMT") # good as.POSIXct("2010-02-27T04:00:00", tz = "GMT", format = "%Y-%m-%dT%H:%M:%OS" ) # good as.POSIXct("2010-02-27") # BAD -- no timezone as.POSIXct("2010-02-27T04:00:00", tz = "GMT") # BAD -- no formatting ## ----eleventh, results="hide"------------------------------------------------- help("IRISSeismic", package = "IRISSeismic") ## ----twelfth,fig.height=8, fig.width=6---------------------------------------- starttime <- as.POSIXct("2010-02-27", tz = "GMT") endtime <- as.POSIXct("2010-02-28", tz = "GMT") result <- try(st <- getDataselect(iris, "IU", "ANMO", "00", "BHZ", starttime, endtime)) if (inherits(result, "try-error")) { message(geterrmessage()) } else { start2 <- as.POSIXct("2010-02-27 06:40:00", tz = "GMT") end2 <- as.POSIXct("2010-02-27 07:40:00", tz = "GMT") tr1 <- st@traces[[1]] tr2 <- slice(tr1, start2, end2) layout(matrix(seq(2))) # layout a 2x1 matrix plot(tr1) plot(tr2) layout(1) # restore original layout } ## ----include=FALSE------------------------------------------------------------ if (exists("st")) { rm(st) } if (exists("tr1")) { rm(tr1) } if (exists("tr2")) { rm(tr2) } ## ----thirteenth--------------------------------------------------------------- starttime <- as.POSIXct("2002-04-20", tz = "GMT") endtime <- as.POSIXct("2002-04-21", tz = "GMT") result <- try(st <- getDataselect(iris, "US", "OXF", "", "BHZ", starttime, endtime)) if (inherits(result, "try-error")) { message(geterrmessage()) } else { tr <- st@traces[[3]] picker <- STALTA(tr, 3, 30) threshold <- quantile(picker, 0.99999, na.rm = TRUE) to <- triggerOnset(tr, picker, threshold) } ## ----fourteenth, fig.height=12, fig.width=6----------------------------------- if (exists("tr")) { layout(matrix(seq(3))) # layout a 3x1 matrix closeup1 <- eventWindow(tr, picker, threshold, 3600) closeup2 <- eventWindow(tr, picker, threshold, 600) plot(tr) abline(v = to, col = "red", lwd = 2) plot(closeup1) abline(v = to, col = "red", lwd = 2) plot(closeup2) abline(v = to, col = "red", lwd = 2) layout(1) # restore original layout } ## ----include=FALSE------------------------------------------------------------ if (exists("st")) { rm(st) } if (exists("tr")) { rm(tr) } ## ----fiftheenth--------------------------------------------------------------- starttime <- as.POSIXct("2010-02-27", tz = "GMT") endtime <- as.POSIXct("2010-02-28", tz = "GMT") result <- try(availability <- getAvailability(iris, "IU", "ANMO", "*", "B??", starttime, endtime)) if (inherits(result, "try-error")) { message(geterrmessage()) } else { availability } ## ----sixteenth, fig.height=4, fig.width=6------------------------------------- # Open a connection to EarthScope webservices iris <- new("IrisClient") # Two days around the "Nisqually Quake" starttime <- as.POSIXct("2001-02-27", tz = "GMT") endtime <- starttime + 3600 * 24 * 2 # Find biggest seismic event over these two days -- it's the "Nisqually" result <- try(events <- getEvent(iris, starttime, endtime, minmag = 5.0)) if (inherits(result, "try-error")) { message(geterrmessage()) } else { bigOneIndex <- which(events$magnitude == max(events$magnitude)) bigOne <- events[bigOneIndex[1], ] } # Find US stations that are available within 10 degrees of arc of the # event location during the 15 minutes after the event if (exists("bigOne")) { start <- bigOne$time end <- start + 900 result <- try(av <- getAvailability(iris, "US", "", "", "BHZ", start, end, latitude = bigOne$latitude, longitude = bigOne$longitude, minradius = 0, maxradius = 10 )) if (inherits(result, "try-error")) { message(geterrmessage()) } else { # Get the station the furthest East minLonIndex <- which(av$longitude == max(av$longitude)) snclE <- av[minLonIndex, ] } } # Get travel times to this station result <- try(traveltimes <- getTraveltime( iris, bigOne$latitude, bigOne$longitude, bigOne$depth, snclE$latitude, snclE$longitude )) if (inherits(result, "try-error")) { message(geterrmessage()) } else { # Look at the list traveltimes # Find the P and S arrival times pArrival <- start + traveltimes$travelTime[traveltimes$phaseName == "P"] sArrival <- start + traveltimes$travelTime[traveltimes$phaseName == "S"] # Get the BHZ signal for this station result <- try(st <- getDataselect( iris, snclE$network, snclE$station, snclE$location, snclE$channel, start, end )) if (inherits(result, "try-error")) { message(geterrmessage()) } else { # Check that there is only a single trace length(st@traces) # Plot the seismic trace and mark the "P" and "S" arrival times tr <- st@traces[[1]] plot(tr, subsampling = 1) # need subsampling=1 to add vertical lines with abline() abline(v = pArrival, col = "red") abline(v = sArrival, col = "blue") } }