Skip to content

Commit 7633182

Browse files
authored
Merge branch 'cascadiaquakes:main' into main
2 parents dbe2a39 + bf33196 commit 7633182

13 files changed

+781
-2616
lines changed

README.md

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
11
![Deployement of book](../../actions/workflows/deploy-book.yml/badge.svg) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/cascadiaquakes/2025_ML_TSC/)
2-
[Link to Jupyter-book template book](https://cascadiaquakes.github.io/2025_ML_TSC/)
2+
[Link to Jupyter-book](https://cascadiaquakes.github.io/2025_ML_TSC/)
33

4-
# Jupyterbook for the 2025 Machine Learning Technical Short Course
4+
# 2025 CRESCENT Machine Learning Technical Short Course
55

6-
This repository contains the notebooks for the 2025 Machine Learning Technical Short Course.
6+
## Program Overview
7+
This three-day short course provides a hands-on introduction to machine learning techniques for seismic event analysis. Participants will learn to develop AI-aided earthquake catalogs through three key steps: event detection, association, and location with quality control. The course covers neural network architecture selection, model training, performance metrics, and application to continuous seismic data. The workshop will include a mix of presentations and hands-on tutorials. The final day will include a participant hack-a-thon in which students attempt to develop a machine learning based quality control workflow to apply to future generations of machine learning earthquake catalogs.
8+
9+
## Learning Goals and Objectives
10+
11+
By the end of this short course, participants will be able to:
12+
13+
- Explain the role of machine learning in earthquake detection, association, and location.
14+
- Select appropriate neural network architectures for earthquake detection and phase picking.
15+
- Train models using labeled seismic datasets and evaluate their performance.
16+
- Implement trained models to detect and associate seismic events in real-world data.
17+
- Optimize model parameters for accuracy and efficiency in earthquake cataloging.
18+
- Integrate machine learning outputs into earthquake location algorithms.
19+
- Assess model predictions and refine event catalogs through quality control methods.
20+
- Design end-to-end machine learning workflows tailored to specific seismic networks or research needs.
21+
- Collaborate on participant-led exercises to improve catalog quality and reliability.
22+
23+
## Agenda
24+
25+
| Time | Day 1 (Mon) | Day 2 (Tue) | Day 3 (Wed) |
26+
|------------------|----------------------------------------|------------------------------------------|-------------------------------------------|
27+
| 9:00 – 10:30am | Research Talk: AI-ready Data Set for the Pacific Northwest (Yiyu Ni, UW) | Research Talk: Ian McBreatry gives an intro to Association | Research Talk: Felix Waldhauser shows how to build precise earthquake catalogs |
28+
| 10:30 – 11:00am | Coffee Break | Coffee Break | Coffee Break |
29+
| 11:00 – 12:30pm | Hack: Training a Phase Picker | Lecture: Training a Graph Network | Hack: Event Relocations |
30+
| 12:30 – 1:30pm | Lunch | Lunch | Lunch |
31+
| 1:30 – 2:30pm | Lecture: Evaluating Model Performance | Research Talk: Multi-Geohazard Event Discrimination (Akash Kharita, UW), with a tutorial | Science talks / Karaoke / other |
32+
| 2:30 – 3:00pm | Research Talk: Amanda talk on CNN & LFE detection | Research Talk: Akash Kharita presents event discrimination in the PNW | |
33+
| 3:00 – 5:00pm | Hackathon: Detect and Pick on continuous Data | Hackathon: Establishing Quality Control Metrics? | |
34+
35+
36+
## Prerequisites
37+
38+
1. Participants must have intermediate python skills including:
39+
40+
- Core Python Proficiency – Comfortable with syntax, functions, and best practices.
41+
- Data Handling – Uses pandas and NumPy for data manipulation and analysis.
42+
- Automation & File Handling – Reads/writes files, automates tasks, and web scrapes with requests.
43+
- Debugging & Exception Handling – Uses try-except, logging, and debugging tools.
44+
- Data Visualization – Creates plots using Matplotlib, Seaborn, or plotly.
45+
- Algorithms & Data Structures – Implements sorting and searching
46+
- Version Control – Works with Git/GitHub, branches, and pull requests.
47+
- Python Packages & Environments – Creates/imports modules, manages dependencies with venv/conda.
48+
49+
2. Must have a laptop computer capable of accessing the internet.
50+
51+
52+
## Instructors
53+
54+
[Marine Denolle](https://denolle-lab.github.io/) (University of Washington)<br>
55+
[Amanda Thomas](https://amtseismo.github.io/) (University of California, Davis)<br>
56+
[Ian McBrearty](https://www.researchgate.net/profile/Ian-Mcbrearty) (Stanford University)<br>
57+
[Loïc Bachelot](https://loicbachelot.github.io/) (University of Oregon)<br>
58+
[Yiyu Ni](https://niyiyu.github.io/) (University of Washington)<br>
59+
[Akash Kharita](https://sites.google.com/view/akashkharita/home) (University of Washington)<br>
60+
[Felix Waldhauser](https://www.ldeo.columbia.edu/~felixw/) (Columbia University)<br>

_toc.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ parts:
1111
- caption: Seismic Phase Detection
1212
chapters:
1313
- file: notebooks/niyiyu/curated_pnw_dataset_seisbench.ipynb
14-
- file: notebooks/Loic/UNet/add_training_split.ipynb
1514
- file: notebooks/Loic/UNet/make_unet_annotated.ipynb
1615
- file: notebooks/Amanda/unet_performance_metrics.ipynb
1716
- file: notebooks/Amanda/apply_unet.ipynb

notebooks/Amanda/unet_performance_metrics.ipynb

Lines changed: 581 additions & 715 deletions
Large diffs are not rendered by default.

notebooks/Loic/GNN/GNN_node_regression_annotated.ipynb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"id": "7a56d467",
66
"metadata": {},
77
"source": [
8-
"# 🧠 GNN for Node-Level Regression: Predicting Sine Waves\n",
8+
"# 🌐 GNN for Node-Level Regression: Predicting Sine Waves\n",
99
"\n",
1010
"**Author:** Loïc Bachelot \n",
1111
"**Goal:** This notebook demonstrates how to use a GNN to predict 1D sine wave signals at each node of a synthetic graph.\n",
@@ -491,7 +491,7 @@
491491
"- **`signal`**: Node signals (sine waves delayed by distance to a hidden origin) `[num_nodes, signal_length]`\n",
492492
"- **`origin`**: The hidden 2D origin point `[2]` used to generate node signals (not directly used for supervision here)\n",
493493
"- **`edge_index`**: Connectivity information between nodes (edges)\n",
494-
"- **`edge_weight`**: Inverse-distance weights for edges (higher weight = closer nodes)\n",
494+
"- **`edge_attr`**: distance weights for edges (both in x and y)\n",
495495
"\n",
496496
"This compact graph-based representation allows flexible training for node-level prediction tasks, \n",
497497
"while preserving spatial and relational structure essential for learning.\n"
@@ -632,7 +632,7 @@
632632
"### 🏗️ Architecture Overview:\n",
633633
"\n",
634634
"1. **Signal Feature Extraction** \n",
635-
" Each node’s raw signal is processed through a 1D convolution and max pooling to extract compact local features.\n",
635+
" Each node’s raw signal is processed through a simple MLP to extract compact local features.\n",
636636
"\n",
637637
"2. **Feature Fusion** \n",
638638
" The extracted signal features are concatenated with the node's spatial coordinates (x, y) to create a combined feature vector.\n",

notebooks/Loic/UNet/add_training_split.ipynb

Lines changed: 0 additions & 72 deletions
This file was deleted.

0 commit comments

Comments
 (0)