Environmental Seismology – harvesting the seismic signals of Earth surface processes

NEW: Shakescape website online. This site hosts a growing collection of seismic signals turned into sound.

Environmental seismology is the science of the seismic signals emitted by Earth surface processes. It provides the unique opportunity to assess type, timing, location, magnitude and interconnections of a wide range of the processes that shape our planet. Environmental seismology is placed at the seams of geomorphology and several neighbouring disciplines, first of all seismology but also meteorology, hydrology, glaciology and natural hazards research.

Spectrogram of an Earthquake followed by a rockfall
Spectrogram of a heavy rainfall event
Spectrogram of a debris flow and hillslope activity
Spectrogram of a three day lasting storm event

WHY R?
Environmental seismology heavily relies on high-resolution data. Usually, a seismic station collects data from three-component broadband seismometers with recording frequencies of 100 Hz and higher. This yields more than one million samples per station and hour and requires efficient software to handle these data. However, environmental seismology is mainly a tool for geomorphologists also operating in other analysis fields such as spatial data handling, (climatic/meteorologic) time series manipulation and multivariate statistics. Hence, R is the ideal base for this setting as it is easy to learn and yet one of the most powerful and general tools for almost any kind of data (Dietze, 2018).


THE PACKAGE eseis (CRAN version 0.5.0, current developer version 0.6.0)
  • Support of sac and mseed files
  • Deconvolution of signals with preset lists of sensors and loggers (user-defined extension supported)
  • Coherent workflow from input file to event analysis
  • High-quality plot functions
  • Multicore support
  • Full documentation including code examples and sample data

GETTING THE PACKAGE
The R package eseis is hosted on the Comprehensive R Archive network CRAN. Installing the package is therefore easy. In R simply type install.packages("eseis"). This will install the latest stable version 0.5.0 (cf. Dietze, 2018).

On Ubuntu v. 20.04, the following dependency libraries need to be installed through the terminal, first:
sudo apt-get install libfftw3-dev libfftw3-doc libcurl4-openssl-dev libxml2 libxml2-dev libgdal-dev libproj-dev

Upon first installation, R will ask about yes or no for installing Miniconda. This software is required for some optional features of eseis, such as Obspy support. I recommend allowing that installation, unless there are good reasons for not doing so.

The package is continuously developed. Development is implemented via GitHub. There, one can get the most recent developer distribution (0.6.0). There are a series of ways to install the package. The most convenient and coherent one is installing it through the R-package devtools.

library("devtools")
install_github(repo = "coffeemuggler/eseis", ref = "dev_0.6.0")

Of course, this requires installing devtools first (e.g., by typing install.packages("devtools")). If you need help installing devtools, see the help page on the CRAN website. Alternatively, if you do not want or do not manage to work with devtools these versions can be downloaded (no guarantee for the very latest version, see time stamp on GitHub) and used for installation typing

install.packages(pkgs = "~/Downloads/eseis_0.6.0.tar.gz", repos = NULL, type = "source")

where "~/Downloads/eseis_0.6.0.tar.gz" is the location where you downloaded the package source archive. Attention, before installing the package eseis make sure that all required dependencies are installed, because manual package installation does not install dependiencies along. An easy way to check/install the dependencies is the folloqing R code snippet:
pkgs <- c("sp", "multitaper", "raster", "rgdal", "caTools", "signal", "fftw", "matrixStats", "methods", "IRISSeismic", "Rcpp", "XML", "rmarkdown", "reticulate")
for(i in 1:length(pkgs)) {install.packages(pkgs[i])}

Linux/Mac OS eseis_0.6.0.tar.gz
eseis_0.5.0.tar.gz
eseis_0.4.0.tar.gz
eseis_0.3.2.tar.gz
eseis_0.3.1.tar.gz
compiled 2019-12-18
compiled 2018-09-18
compiled 2018-06-05
compiled 2017-04-11
compiled 2016-11-07
Windows OS eseis_0.6.0.zip
eseis_0.5.0.zip
eseis_0.4.0.zip
eseis_0.3.2.zip
eseis_0.3.1.zip
compiled 2019-12-18
compiled 2018-07-16
compiled 2018-06-05
compiled 2017-04-11
compiled 2016-11-07
HOWEVER, IT IS VERY LIKELY THAT THE PACKAGES FROM THE TABLE ABOVE ARE OUTDATED WITH RESPECT TO THE GITHUB VERSION. IN CASE YOU DISCOVER ANY BUGS, PLEASE CROSS-CHECK WITH THE LATEST GITHUB VERSION, FIRST.


A BRIEF INTRODUCTION
There is a growing tutorial as a pdf document that can be reached following this link: eseis Tutorial

BUGS AND REQUESTS
If you feel helpless with an issue or notice a bug in one of the functions of the package, if you wish to have a further feature implemented, there is a good chance that I will engange with this issue, if you let me know of it. Please send me an email and I will add this to the list of issues shown here.
  • Micha

    Write analogue function to aux_organisecubefiles() also for Centaur mseed files.

    • Micha

      Bug in aux_organisecubefiles(). File names were assigned wrongly and unsystematically during conversion procedure.

      Bug fixed. New procedure builds file names from mseed or sac meta information after all modifications were made to the files. Tests with all file formats and channel name options were successful.

    • Micha

      Bug in read_sac(). When reading more then one file and setting append = FALSE, the time vector of each element is wrapped into another list. To access it one needs to to type xyz[[1]]$time[[1]] instead of xyz[[1]]$time.

    • Micha

      Implement signal::decimate instead of current approach to downsample a signal vector. Also implement signal::interp to allow increasing the sample rate for homogenous data treament from different loggers.

      Implemented. In dev_0.5.0 the function now uses signal::decimate.

    • Micha

      Implement further filter options. These can include signal::fftfilt or other filter shapes from the signal-package.

      Implemented. In dev_0.5.0 function signal_filter now has a further argument fft = TRUE, which - if toggled TRUE - performs filtering in the frequency domain.

    • Micha

      implement function to write mseed files.

      Implemented. In dev_0.5.0 there is a function write_mseed, which uses the ObsPy package (as suggested dependency) to write eseis objects as mseed files.