ESS 412/512: Introduction to Seismology#
Computational labs and lectures for ESS 412 (undergraduate) and ESS 512 (graduate) seismology at the University of Washington by Marine Denolle. Materials supplement Peter Shearer’s Introduction to Seismology with hands-on Python exercises using real seismic data.
📖 Course site: https://uw-geophysics-edu.github.io/ess-412-512-intro2seismology/
Course Modules#
Module |
Lecture |
Labs |
Topics |
|---|---|---|---|
1 — Data Foundations |
— |
01 |
FDSN data access, ObsPy, Fourier analysis, filtering |
2 — Stress & Strain |
02 |
Elastic constants, stress/strain tensors, Hooke’s Law |
|
3 — Body Waves |
03a–c |
P/S polarization, ray tracing (PyKonal), global phases (TauP) |
|
4 — Reflection |
— |
04a–b |
Reflection/transmission coefficients, CMP, NMO, migration |
5 — Surface Waves |
05a–d |
Rayleigh & Love waves, dispersion, ambient noise |
|
6 — Earthquake Sources |
06a |
Earthquake location methods & uncertainties |
|
7 — Moment Tensors & Magnitudes |
Moment Tensors, Radiation Patterns, Magnitudes, Source Dynamics |
07a–d |
Moment tensor decomposition, radiation patterns, magnitude scales, source dynamics, stress drop, energy budget |
8 — Earthquake Dynamics |
08 |
Nucleation, dynamic rupture |
|
9 — Synthesis & Frontiers |
— |
Course synthesis, research frontiers |
|
Optional |
Tomography, Inversion |
Travel-time tomography, surface wave inversion |
Each notebook includes a Colab badge — click it to run in Google Colab with no local setup.
Quick Start#
See INSTALL.md for full setup details.
# Option 1: Conda
git clone https://github.com/UW-geophysics-edu/ess-412-512-intro2seismology.git
cd ess-412-512-intro2seismology
conda env create -f environment.yml
conda activate ess412
# Option 2: Pixi (preferred for development)
pixi install
Repository Structure#
notebooks/ Jupyter labs (01–08, named {Module}_{Topic}_{Type}.ipynb)
lectures/ MyST Markdown lecture notes
homework/ Assignments (midterm)
solutions/ Instructor solutions
scripts/ Validation & maintenance scripts
references.bib Shared BibTeX bibliography
_toc.yml Table of contents
_config.yml Jupyter Book configuration
pixi.toml Pixi tasks & dependencies
environment.yml Conda environment
ESS 412 vs 512#
ESS 412: Core exercises, provided code templates, physical interpretation
ESS 512: Additional analytical depth, implement algorithms from scratch, literature connections, paper presentation
Graduate-only sections are clearly marked in each notebook.
References & Citations#
All references live in references.bib. Cite in MyST Markdown with:
{cite:t}`Shearer2009` → Shearer (2009)
{cite:p}`Shearer2009` → (Shearer, 2009)
{cite}`Shearer2009,AkiRichards2002` → multiple
Add a bibliography block at the bottom of any page that uses citations:
```{bibliography}
:filter: docname in docnames
```
Contributing#
See CONTRIBUTING.md for notebook conventions, naming, and validation steps. Quick checklist:
Follow the naming convention:
{Module}{Letter}_{Topic}_{Type}.ipynbAdd a Colab badge in the first cell (URL must use
UW-geophysics-edu)Update
_toc.ymlif adding a new fileRun
pre-commit run --all-filesbefore committing
Acknowledgments#
Course structure based on Peter Shearer’s Introduction to Seismology (Cambridge University Press)
Built with ObsPy, Jupyter Book, and sphinxcontrib-bibtex
Seismic data from Earthscope Consortium via FDSN web services
Course was co-edited with a mix of ChatGPT 5.2 and Claude Sonnet 4.6 and Opus 4.6. AI was used to generate toy python examples, to synthesize book chapters, to relate course content to learning materials, to relate foundational course content to relevant scientific literature chosen 2023-2025.
License#
MIT — see LICENSE.
Contact#
Instructor: Marine Denolle · ESS 412/512, University of Washington Repo: UW-geophysics-edu/ess-412-512-intro2seismology