gp-prob-earthquake-shaking
Official implementation of Gaussian Processes for Probabilistic Estimates of Earthquake Ground Shaking: A 1-D Proof-of-Concept, accepted in ML4PS Workshop @ NeurIPS 2024.
Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 23 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.0%) to scientific vocabulary
Repository
Official implementation of Gaussian Processes for Probabilistic Estimates of Earthquake Ground Shaking: A 1-D Proof-of-Concept, accepted in ML4PS Workshop @ NeurIPS 2024.
Basic Info
- Host: GitHub
- Owner: sscivier
- License: apache-2.0
- Language: Jupyter Notebook
- Default Branch: main
- Homepage: https://arxiv.org/abs/2412.03299
- Size: 12.5 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 5
Metadata Files
README.md
Gaussian Processes for Probabilistic Estimates of Earthquake Ground Shaking: A 1-D Proof-of-Concept, accepted in ML4PS Workshop @ NeurIPS 2024.
Table of Contents
- Introduction
- Installation
- Usage
- Citing this work
- Contributing, questions, and issues
- License
- References and Acknowledgements
Introduction
This repository is the official implementation of Gaussian Processes for Probabilistic Estimates of Earthquake Ground Shaking: A 1-D Proof-of-Concept, accepted in ML4PS Workshop @ NeurIPS 2024.
We present a proof-of-concept workflow for probabilistic earthquake ground motion prediction that accounts for inconsistencies between existing seismic velocity models. The approach is based on the probabilistic merging of overlapping seismic velocity models using scalable Gaussian Process (GP) regression. We fit a GP to two synthetic 1-D velocity profiles simultaneously, demonstrating that the predictive uncertainty accounts for the differences between them. We then draw samples of velocity models from the predictive distribution and simulate the acoustic wave equation using each sample as input. This results in a distribution of possible peak ground displacement (PGD) scenarios, reflecting the degree of knowledge of seismic velocities in the region.
Installation
You can use Binder to run the notebook online without any installation. Click the Binder badge at the top of this README to launch the notebooks in your browser. It is recommended not to run model training on Binder, as it may take much longer than on your computer.
If you wish to run the code on your computer, the installation instructions have two options: either for using CUDA for GPU acceleration during model training, or not. CUDA users should follow the CUDA instructions, and CPU users should follow the CPU instructions.
This code has been tested using Python 3.10.12. Using a different Python version may result in package conflicts, or installation errors. If pip cannot find certain packages during installation, then ensure you are running Python 3.10.12 in your virtual environment, and retry the installation.
Create a virtual environment:
Navigate to working directory. Create venv (change name by replacing my-venv), and activate:
shell
python3 -m venv my-venv
source my-env/bin/activate
Clone the repository:
shell
git clone git@github.com:sscivier/gp-prob-earthquake-shaking.git
CUDA:
Install requirements:
shell
pip install -r requirements_cuda.txt
CPU:
Install requirements:
shell
pip install -r requirements.txt
Usage
All of the code necessary to reproduce the results in the paper is contained in the Jupyter Notebook, workflow.ipynb.
By default, the training code in the notebook is commented out. If you wish to run the training code, simply uncomment it. This cell is indicated in the notebook.
Pre-trained models are found in the trained_models/ directory. These are loaded by default in the notebook.
Citing this work
If you find this software useful in your research, please cite the software and the associated paper. This repository includes a CITATION.cff file containing the software citation. GitHub automatically generates APA and BibTeX citations that you can use. To cite the paper, please use the following BibTeX citation:
@misc{scivier2024gaussianprocessesprobabilisticestimates,
title = {Gaussian Processes for Probabilistic Estimates of Earthquake Ground Shaking: A 1-D Proof-of-Concept},
author = {Sam A. Scivier and Tarje Nissen-Meyer and Paula Koelemeijer and Atılım Güneş Baydin},
year = {2024},
eprint = {2412.03299},
archivePrefix = {arXiv},
primaryClass = {physics.geo-ph},
url = {https://arxiv.org/abs/2412.03299},
}
Contributing, questions, and issues
If you have any suggestions, improvements, questions, or comments - please create an issue, submit a pull request, or get in touch.
License
This project is licensed under the Apache-2.0 License. See the LICENSE file for details.
References and Acknowledgements
This repository uses the following open-source software libraries:
- Jupyter Notebooks [Website][GitHub]
- Binder [Website][GitHub]
- NumPy v2.1.3 [Website][GitHub]
- SciPy v1.14.1 [Website][GitHub]
- Matplotlib v3.9.2 [Website][GitHub]
- PyTorch v2.5.1 [Website][GitHub]
- GPyTorch v1.13 [Website][GitHub]
Sam A. Scivier is funded by a UKRI NERC DTP Award (NE/S007474/1) and gratefully acknowledges their support.
Owner
- Login: sscivier
- Kind: user
- Repositories: 1
- Profile: https://github.com/sscivier
Citation (CITATION.cff)
cff-version: 1.2.0
title: >-
Gaussian Processes for Probabilistic Estimates of
Earthquake Ground Shaking: A 1-D Proof-of-Concept
message: >-
If you find this software useful in your research, please
cite the software and the associated paper.
type: software
authors:
- given-names: Sam A.
family-names: Scivier
email: sam.scivier@earth.ox.ac.uk
affiliation: University of Oxford
orcid: 'https://orcid.org/0000-0003-1635-9475'
- given-names: Tarje
family-names: Nissen-Meyer
email: t.nissen-meyer@exeter.ac.uk
affiliation: University of Exeter
orcid: 'https://orcid.org/0000-0002-9051-1060'
- given-names: Paula
family-names: Koelemeijer
email: paula.koelemeijer@earth.ox.ac.uk
affiliation: University of Oxford
orcid: 'https://orcid.org/0000-0001-5153-3040'
- given-names: Atılım Güneş
family-names: Baydin
email: gunes.baydin@cs.ox.ac.uk
affiliation: University of Oxford
orcid: 'https://orcid.org/0000-0001-9854-8100'
doi: 10.5281/zenodo.14246055
url: 'https://doi.org/10.5281/zenodo.14246055'
repository-code: 'https://github.com/sscivier/gp-prob-earthquake-shaking'
abstract: >-
We present a proof-of-concept workflow for probabilistic
earthquake ground motion prediction that accounts for
inconsistencies between existing seismic velocity models.
The approach is based on the probabilistic merging of
overlapping seismic velocity models using scalable
Gaussian Process (GP) regression. We fit a GP to two
synthetic 1-D velocity profiles simultaneously,
demonstrating that the predictive uncertainty accounts for
the differences between them. We then draw samples of
velocity models from the predictive distribution and
simulate the acoustic wave equation using each sample as
input. This results in a distribution of possible peak
ground displacement (PGD) scenarios, reflecting the degree
of knowledge of seismic velocities in the region.
keywords:
- Seismology
- Gaussian Processes
- Seismic Hazard
- Data Fusion
- Probabilistic Machine Learning
license: Apache-2.0
version: 0.1.4
date-released: '2024-12-22'
GitHub Events
Total
- Create event: 9
- Release event: 5
- Issues event: 8
- Delete event: 3
- Push event: 38
- Pull request event: 8
- Fork event: 2
Last Year
- Create event: 9
- Release event: 5
- Issues event: 8
- Delete event: 3
- Push event: 38
- Pull request event: 8
- Fork event: 2
Dependencies
- Jinja2 ==3.1.3
- MarkupSafe ==2.1.5
- PyYAML ==6.0.2
- Pygments ==2.18.0
- Send2Trash ==1.8.3
- anyio ==4.6.2.post1
- argon2-cffi ==23.1.0
- argon2-cffi-bindings ==21.2.0
- arrow ==1.3.0
- asttokens ==2.4.1
- async-lru ==2.0.4
- attrs ==24.2.0
- babel ==2.16.0
- beautifulsoup4 ==4.12.3
- bleach ==6.2.0
- certifi ==2024.8.30
- cffi ==1.17.1
- charset-normalizer ==3.4.0
- comm ==0.2.2
- contourpy ==1.3.0
- cycler ==0.12.1
- debugpy ==1.8.8
- decorator ==5.1.1
- defusedxml ==0.7.1
- exceptiongroup ==1.2.2
- executing ==2.1.0
- fastjsonschema ==2.20.0
- filelock ==3.13.1
- fonttools ==4.54.1
- fqdn ==1.5.1
- fsspec ==2024.2.0
- gpytorch ==1.13
- h11 ==0.14.0
- httpcore ==1.0.6
- httpx ==0.27.2
- idna ==3.10
- ipykernel ==6.29.5
- ipython ==8.29.0
- isoduration ==20.11.0
- jaxtyping ==0.2.19
- jedi ==0.19.2
- joblib ==1.4.2
- json5 ==0.9.27
- jsonpointer ==3.0.0
- jsonschema ==4.23.0
- jsonschema-specifications ==2024.10.1
- jupyter-events ==0.10.0
- jupyter-lsp ==2.2.5
- jupyter_client ==8.6.3
- jupyter_core ==5.7.2
- jupyter_server ==2.14.2
- jupyter_server_terminals ==0.5.3
- jupyterlab ==4.2.5
- jupyterlab_pygments ==0.3.0
- jupyterlab_server ==2.27.3
- kiwisolver ==1.4.7
- linear-operator ==0.5.3
- matplotlib ==3.9.2
- matplotlib-inline ==0.1.7
- mistune ==3.0.2
- mpmath ==1.3.0
- nbclient ==0.10.0
- nbconvert ==7.16.4
- nbformat ==5.10.4
- nest-asyncio ==1.6.0
- networkx ==3.2.1
- notebook ==7.2.2
- notebook_shim ==0.2.4
- numpy ==2.1.3
- overrides ==7.7.0
- packaging ==24.2
- pandocfilters ==1.5.1
- parso ==0.8.4
- pexpect ==4.9.0
- pillow ==11.0.0
- platformdirs ==4.3.6
- prometheus_client ==0.21.0
- prompt_toolkit ==3.0.48
- psutil ==6.1.0
- ptyprocess ==0.7.0
- pure_eval ==0.2.3
- pycparser ==2.22
- pyparsing ==3.2.0
- python-dateutil ==2.9.0.post0
- python-json-logger ==2.0.7
- pyzmq ==26.2.0
- referencing ==0.35.1
- requests ==2.32.3
- rfc3339-validator ==0.1.4
- rfc3986-validator ==0.1.1
- rpds-py ==0.21.0
- scikit-learn ==1.5.2
- scipy ==1.14.1
- six ==1.16.0
- sniffio ==1.3.1
- soupsieve ==2.6
- stack-data ==0.6.3
- sympy ==1.13.1
- terminado ==0.18.1
- threadpoolctl ==3.5.0
- tinycss2 ==1.4.0
- tomli ==2.0.2
- torch ==2.5.1
- tornado ==6.4.1
- tqdm ==4.67.0
- traitlets ==5.14.3
- typeguard ==4.4.1
- types-python-dateutil ==2.9.0.20241003
- typing_extensions ==4.12.2
- uri-template ==1.3.0
- urllib3 ==2.2.3
- wcwidth ==0.2.13
- webcolors ==24.11.1
- webencodings ==0.5.1
- websocket-client ==1.8.0
- Jinja2 ==3.1.3
- MarkupSafe ==2.1.5
- PyYAML ==6.0.2
- Pygments ==2.18.0
- Send2Trash ==1.8.3
- anyio ==4.6.2.post1
- argon2-cffi ==23.1.0
- argon2-cffi-bindings ==21.2.0
- arrow ==1.3.0
- asttokens ==2.4.1
- async-lru ==2.0.4
- attrs ==24.2.0
- babel ==2.16.0
- beautifulsoup4 ==4.12.3
- bleach ==6.2.0
- certifi ==2024.8.30
- cffi ==1.17.1
- charset-normalizer ==3.4.0
- comm ==0.2.2
- contourpy ==1.3.0
- cycler ==0.12.1
- debugpy ==1.8.8
- decorator ==5.1.1
- defusedxml ==0.7.1
- exceptiongroup ==1.2.2
- executing ==2.1.0
- fastjsonschema ==2.20.0
- filelock ==3.13.1
- fonttools ==4.54.1
- fqdn ==1.5.1
- fsspec ==2024.2.0
- gpytorch ==1.13
- h11 ==0.14.0
- httpcore ==1.0.6
- httpx ==0.27.2
- idna ==3.10
- ipykernel ==6.29.5
- ipython ==8.29.0
- isoduration ==20.11.0
- jaxtyping ==0.2.19
- jedi ==0.19.2
- joblib ==1.4.2
- json5 ==0.9.27
- jsonpointer ==3.0.0
- jsonschema ==4.23.0
- jsonschema-specifications ==2024.10.1
- jupyter-events ==0.10.0
- jupyter-lsp ==2.2.5
- jupyter_client ==8.6.3
- jupyter_core ==5.7.2
- jupyter_server ==2.14.2
- jupyter_server_terminals ==0.5.3
- jupyterlab ==4.2.5
- jupyterlab_pygments ==0.3.0
- jupyterlab_server ==2.27.3
- kiwisolver ==1.4.7
- linear-operator ==0.5.3
- matplotlib ==3.9.2
- matplotlib-inline ==0.1.7
- mistune ==3.0.2
- mpmath ==1.3.0
- nbclient ==0.10.0
- nbconvert ==7.16.4
- nbformat ==5.10.4
- nest-asyncio ==1.6.0
- networkx ==3.2.1
- notebook ==7.2.2
- notebook_shim ==0.2.4
- numpy ==2.1.3
- overrides ==7.7.0
- packaging ==24.2
- pandocfilters ==1.5.1
- parso ==0.8.4
- pexpect ==4.9.0
- pillow ==11.0.0
- platformdirs ==4.3.6
- prometheus_client ==0.21.0
- prompt_toolkit ==3.0.48
- psutil ==6.1.0
- ptyprocess ==0.7.0
- pure_eval ==0.2.3
- pycparser ==2.22
- pyparsing ==3.2.0
- python-dateutil ==2.9.0.post0
- python-json-logger ==2.0.7
- pyzmq ==26.2.0
- referencing ==0.35.1
- requests ==2.32.3
- rfc3339-validator ==0.1.4
- rfc3986-validator ==0.1.1
- rpds-py ==0.21.0
- scikit-learn ==1.5.2
- scipy ==1.14.1
- six ==1.16.0
- sniffio ==1.3.1
- soupsieve ==2.6
- stack-data ==0.6.3
- sympy ==1.13.1
- terminado ==0.18.1
- threadpoolctl ==3.5.0
- tinycss2 ==1.4.0
- tomli ==2.0.2
- torch ==2.5.1
- tornado ==6.4.1
- tqdm ==4.67.0
- traitlets ==5.14.3
- typeguard ==4.4.1
- types-python-dateutil ==2.9.0.20241003
- typing_extensions ==4.12.2
- uri-template ==1.3.0
- urllib3 ==2.2.3
- wcwidth ==0.2.13
- webcolors ==24.11.1
- webencodings ==0.5.1
- websocket-client ==1.8.0