Pre-requisites

The goal of this tutorial is to learm how to implement a full earthquake detection and location workflow with BPMF.

Environment

Base

Creating the virtual environment as described here is essential for running the tutorial successfully. We will use the python package manager Anaconda, or rather its ligther version Miniconda. Follow the instructions here https://docs.conda.io/en/latest/miniconda.html to install Miniconda.

Once Anaconda or Miniconda is installed, you can use the conda commands. We will first make sure that conda uses packages from conda-forge when necessary:

$ conda config --add channels conda-forge

We will then create a Python 3.12 environment named BPMF_tuto:

$ conda create -n BPMF_tuto python=3.12

We now need to activate this environment:

$ conda activate BPMF_tuto

C and CUDA-C Compilers

In general, you can use conda to locally install a C and a CUDA-C compiler.

$ conda install gcc
$ conda install -c nvidia cuda-nvcc cuda-toolkit

OR, you may need clang if your machine uses one of the Apple Silicon chips. In which case, run:

$ conda install clang lld
$ conda install -c nvidia cuda-nvcc cuda-toolkit

Standard Python packages

Run the following command to install (almost) all the packages need for this tutorial:

$ conda install obspy numpy scipy pandas matplotlib h5py ipython jupyter cartopy colorcet tqdm

Beampower

beampower is our package with C and CUDA-C routines for backprojection wrapped in Python code. You can download and install beampower with:

$ pip install git+https://github.com/ebeauce/beampower

Note: You might have to modify the Makefile depending on your compilers. See https://ebeauce.github.io/beampower/introduction.html#installation for more information.

Fast Matched Filter

fastmatchedfilter is our package with C and CUDA-C routines for template matching wrappedin Python code. You can download and install fastmatchedfilter:

$ pip install git+https://github.com/beridel/fast_matched_filter

Note: You might have to modify the Makefile depending on your compilers. See https://ebeauce.github.io/FMF_documentation/introduction.html#installation for more information.

PyKonal

pykonal is the package we will use for computing the P- and S-wave travel times (https://github.com/malcolmw/pykonal). Install it with pip:

$ pip install pykonal

SeisBench

The best results with BPMF are achieved when using deep-learning-based phase pickers. seisbench (https://github.com/seisbench/seisbench) provides a convenient and comprehensive API to effortlessly use a number of well known models, such as PhaseNet. Install seisbench with:

$ pip install seisbench

This will also install the package torch, including GPU support if your machine fits the requirements.

NonLinLoc

BPMF provides an interface with the NLLoc software (http://alomax.free.fr/nlloc/) for earthquake location. Get NLLoc at https://github.com/ut-beg-texnet/NonLinLoc <https://github.com/ut-beg-texnet/NonLinLoc> and follow the installation instructions in the README.

$ git clone https://github.com/ut-beg-texnet/NonLinLoc.git
$ cd NonLinLoc
$ cd src
$ rm CMakeCache.txt
$ cmake .
$ make

This will create a series of executable in the bin folder. Make this folder is added to your shell PATH variable. For example, add the following

$ export PATH={/pathtononlinloc/}NonLinLoc/bin/:$PATH

to your .bashrc file (Mac users might need to do the equivalent for zsh or csh instead of bash).

BPMF

Finally, we need to install BPMF to our new environment. We refer you to the Installation Section of the documentation.

Running the Tutorial

The tutorial is made of a series of Ipython notebooks that are meant to be run from 0 to 10.

References

Lomax, Anthony, Alberto Michelini, and Andrew Curtis. “Earthquake location, direct, global-search methods.” In Encyclopedia of complexity and systems science, pp. 1-33. Springer, New York, NY, 2014.

White, Malcolm CA, Hongjian Fang, Nori Nakata, and Yehuda Ben‐Zion. “PyKonal: a Python package for solving the eikonal equation in spherical and Cartesian coordinates using the fast marching method.” Seismological Research Letters 91, no. 4 (2020): 2378-2389.

Woollam, Jack, Jannes Münchmeyer, Frederik Tilmann, Andreas Rietbrock, Dietrich Lange, Thomas Bornstein, Tobias Diehl et al. “SeisBench—A toolbox for machine learning in seismology.” Seismological Society of America 93, no. 3 (2022): 1695-1709.

Zhu, Weiqiang, and Gregory C. Beroza. “PhaseNet: a deep-neural-network-based seismic arrival-time picking method.” Geophysical Journal International 216, no. 1 (2019): 261-273