This repository serves two purposes: 1) it is supplementary material for the “Identifying Seismic Waves with Convolutional Neural Networks” tutorial on my website: [insert website name here] and 2) it is a starting point for those who benefit from seeing an example, from start to finish, of how to train a 1D convolutional neural network to pick the first arriving seismic phase. This model has room for improvement and should serve only as a starting point.
The machine learning pipeline stages included in this repository are:
Downloading Seismic Data --> Pre-Processing & Formatting --> Defining --> Compiling a 1D Convolutional Neural Network --> Training Figure: Schematic of 1D convolutional neural network used to identify the first-arriving phase arrival of an earthquake. Note that each instance is composed of three channels, one for each component measuered by the seismometer (Z, N-S, and E-W). All scripts are written in Python3. The following libraries (and their version) were also used:
- NumPy 1.15.3
- ObsPy 1.1.0
- Pandas 0.23.0
- Keras (on top of TensorFlow) 2.2.4
- TensorFlow 1.8.0
- Matplotlib
- /bin/download_data/define_stations.py
- /bin/download_data/get_quakefiles.py
- /bin/download_data/get_mass_picks.py
- /bin/download_data/get_mass_data.py [currently not included]
- / bin/pre_process/make_data_set.py
- /bin/pre_process/format_waveforms.py
- /models/p_phase_picker.py
Figure: Example waveforms and their associated first arrival using the Baer Pick method (in red) and the machine learning (purple) pick.
Waveform data, metadata, or data products for this study were accessed through the Northern California Earthquake Data Center (NCEDC), doi:10.7932/NCEDC.