Code for assessing array accuracy on a set of earthquakes. Final project for GEOS694 Computational Geosciences (Bryant Chow).
This code is for assessing the accuracy and precision of small-aperture seismic arrays at recording earthquakes or other seismicity.
This code does the following in the specified order:
- Grab earthquakes/events in the vicinity of a seismic array for a set time period.
- Compute the "real" backazimuth and slowness based on the catalog location and a given velocity model.
- Use an STA/LTA scheme to idenfity whether the event "triggers" the array, following the parameters in the EPIC algorithm of ShakeAlert. This includes different handlings for events with multiple triggers and events with no triggers.
- Compute array processing for a specified time window and waveform filtering around STA/LTA trigger. Current array processing algorithms incorporated are: Least Trimmed Squares (Bishop et al., 2020), Least Squares with cross-correlation (Bishop et al., 2020), and Frequency-Wavenumber (Obspy).
- Plotting tools for comparing the catalog backazimuth and slowness to the array calculated backazimuth and slowness. These include:
- map of earthquakes in vicinity of array
- backazimuth error (catalog backazimuth - array backazimuth) as a function of the catalog backazimuth.
- slowness error (catalog slowness - array slowness) as a function of the catalog backazimuth.
- map of backazimuth error
- map of slowness error
Small aperture arrays have grown in interest in the earthquake monitoring and Earthquake Early Warning communities in recent years. This is largely due to an arrays ability to provide accurate backazimuth and slowness estimates of incoming seismic energy. This code provides the ability to assess how accurate these estimates are, check a number of input parameters, and identify systematic patterns in error and provide possible correction criteria.
Create a fork of this repository to your github. Then, create a local repository through your terminal. For example:
git clone <github_link_to_repo>A conda environment with the needed dependencies are provided in environment.yaml. This can be created with the following command in your local repository:
conda env create -f environment.ymlThis will create a environment called arrayseis with the following dependencies:
- python3
- obspy
- pygmt
- numpy (2.14)
- lts_array
- numba
Once your python environment is installed, this can be activated as:
conda activate arrayseisThe input parameters for the code can be found in the input_parameters.yaml file. The possible inputs are found in the documentation
In your local repository, the main code can be run as:
python array_aggregator.py input_parameters.yamlAn example from an array in the Aleutian Islands is provided in input_parameters.yaml.
For project task 1, I will be implementing parallel/concurrency into my code.
For project task 2, I will be doing a parameter input system. In addition, I will also either incorporate Chinook Compatability or Advanced Documentation.
The relevant python file for class reviews is array_aggregator.py. The other main file is array_functions.py, but I'll leave this up to your discretion.