-
Notifications
You must be signed in to change notification settings - Fork 11
Home
Welcome to the automated-receiver-function-and-SKS wiki!
Receiver Function and SKS automatic measurement - Seismological Tools Automated Download, processing & Imaging Using Mostly Python (STADIUM - Py)
- By Cédric P Legendre (@cplegendre) and Utpal Kumar (@utpalrai)
- Based on RF analyses by: Tom Eulenfeld (@trichter); https://github.com/trichter/rf
- Based on SKS analyses by: Jack Walpole (@JackWalpole); https://github.com/JackWalpole/splitwavepy
- Based on ObsPy: https://github.com/obspy/
STADIUM-Py is an open-source project dedicated to provide a Python framework for processing seismological data. It provides a fully automated way to retrieve, process and analyze seismological data.
So far, we have implemented Reciever Function analyses and SKS splitting techniques, more will come in the future.
Please support the project by acknowledging the use of it. If you use STADIUM-Py (directly or as a dependency of another package) for work resulting in an academic publication, we would be grateful if one of the following papers is cited:
-
U. Kumar, C. Legendre and B.S. Huang (2020)
Our paper
Journal, Vol(issue), pag-es
This is a big release with significant internal changes, new features, stability improvements.
The Reciever Function and SKS splitting modules profide some Jupyter notebook examples. The tutorial is a collection of short example programs with explanations and program output. For help getting started with Python, have a look at this collection of links to Tutorials.
STADIUM-Py is currently running and tested on Linux (64 bit) and Mac OS X.
STADIUM-Py runs on Python 2.7, 3.4, 3.5, and 3.6. We highly recommend and only officially support the latest release of each series. Additionally, we recommend you use the latest version of python 3 if possible.
For individual users we strongly recommend Installation via Anaconda.
Install the environment rfsksenv
by running the following command (Note: It requires preinstalled anaconda)
conda env create -f environment_osx_10_14_6.yml
conda env create -f environment_UbuntuXIX.yml
conda activate rfsksenv
pip uninstall shapely; pip install --no-binary :all: shapely
python main.py
In a first step, you need to edit the input_parameters.txt
file.
In this file, several options that may be changed by the user without risk are present.
This includes options to calculate Reciever Functions and / or SKS splitting, but also some options to save the plots created.
There, the location of the region of interest can be defined (with a box of minimum and maximum longitude and latitude).
Other options as the list of data centers to retrieve data from is also present.
Once you run STADIUM-Py, the following procedure will be followed:
STADIUM-Py will run some ObsPy routines (client.get_stations) to contact the clients (defined input_parameters.txt) and check the available stations in the region.
STADIUM-Py will run some ObsPy routines (client.get_events) to contact the clients (defined input_parameters.txt) and check the events that fits some criteria (distance, magnitude, defined input_parameters.txt).
STADIUM-Py will run some ObsPy routines to contact the clients (defined input_parameters.txt) and check the availability of the data before download.
** This is an automated procedure that may be time consuming if a large dataset is selected: important amount of seismic stations operating for a long time span, and low magnitude selected. **
Note that all the seismic traces will be written using the HDF5 format.
The download of seismic waveforms is independant and is used for both Reciever Fucntions and SKS Measurements. In the next step, the description of the process for Reciever Fucntion and SKS splitting measurements is provided.
- Read the station HDF5 file containing all the seismic traces recovered for this station.
data = read_rf(rfdatafile, 'H5')
- Filter and rotate the trace into the LQ domain.
data.rotate('NE->RT')
- Deconvolve the radial and tangential components by the vertical component.
data.rf()
- Calculate the piercing points for each event.
ppoints = data.ppoints('30')
- Stacks the reciever functions before plotting.
- Plot the reciever functions for R and T components, sorted by back azimuth (or distance).
pstream = read_rf(profilefile)
- Create some vertical profile for all stations in selected regions.
- Read the station HDF5 file containing all the seismic traces recovered for this station.
data = read_rf(sksdatafile, 'H5')
- Filter and rotate the trace into the radial/tangential referencial.
trace1.rotate('NE->RT')
* Minimize the energy on the transverse components. * Automatically pick the SKS phase. We implemented several picking options from [ObsPy](https://github.com/obspy/obspy/wiki) to attempt to pick the SKS phase.
* Invert for phase and delay time. ```measure = sw.EigenM(data)``` * Plot the results.
- input parameters Most of the code is automated. However, several parameters need to be set by the user. Those are defined in "input_parameters.txt". Below, you will find a list of the parameters, with possible values and description.
- fresh_start | 0/1 | Delete the 'results' folder and start fresh
- client |IRIS | Enter all the clients for data download separated by commas. List of ObsPy clients: https://docs.obspy.org/packages/obspy.clients.fdsn.html
- mnlong |-130 | Minimum longitude of the region of interest
- mxlong |-60 | Maximum longitude of the region of interest
- mnlat |35 | Minimum latitude of the region of interest
- mxlat |50 | Maximum latitude of the region of interest
- network |* | List of networks (default = all)
- station |* | List of stations (default = all)
- makeRF | 0/1 | Run the code to calculate the Reciever Functions
- obtain_inventory | 0/1 | List all the stations available
- download_data_RF | 0/1 | Download the waveforms to calculate the Reciever Functions
- minradiusRF |30 | Minimum epicentral distance (for Reciever Functions)
- maxradiusRF |90 | Maximum epicentral distance (for Reciever Functions)
- minmagnitudeRF |5.5 | Minimum magnitudes of events (for Reciever Functions)
- maxmagnitudeRF |9.5 | Maximum magnitudes of events (for Reciever Functions)
- plot_stations |0/1 | Create a stations map (for Reciever Functions)
- plot_events |0/1 | Create an events map (for Reciever Functions)
- plot_RF |0/1 | Plot the results (for Reciever Functions)
- plot_ppoints |0/1 | Plot the piercing points (for Reciever Functions)
- num_profile_divs |1 | Amount of vertical and horizontal profiles
- plot_RF_profile |0/1 | Plot the vertical profiles (for Reciever Functions)
- makeSKS |0/1 | Run the code to calculate the shear-wave splitting of SKS phase
- obtain_inventory_SKS |0/1 | List all the stations available (for SKS)
- download_data_SKS |0/1 | Download the waveforms to calculate the shear-wave splitting of SKS phase
- minradiusSKS |90 | Minimum epicentral distance (for SKS)
- maxradiusSKS |120 | Minimum epicentral distance (for SKS)
- minmagnitudeSKS |5.5 | Minimum magnitudes of events (for SKS)
- maxmagnitudeSKS |9.5 | Maximum magnitudes of events (for SKS)
- plot_SKS_stations |0/1 | Create a stations map (for SKS)
- plot_SKS_events |0/1 | Create an events map (for SKS)
- plot_SKS |0/1 | Plot the results (for SKS)
- picking_SKS |0/1 | Picking of the SKS phase
- plot_traces_ENZ |0/1 | Plot the waveforms (for SKS)
- plot_traces_RTZ |0/1 | Plot the rotated waveforms (for SKS)
- plot_trigger |0/1 | Plot the automatic picking of the SKS phase
- plot_SKS_measure |0/1 | Plot the grid search for phase and delay time.
The other parameters are defined in the code and should be modified with caution by the users.
- Style Guide
- Docs or it doesn't exist!
- Performance Tips: