Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #14

Merged
merged 26 commits into from
Jul 17, 2024
Merged

Dev #14

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files
- id: mixed-line-ending
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.3.2
rev: v0.5.2
hooks:
- id: ruff
- id: ruff-format
Expand Down
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,24 @@ Qseek is an earthquake detection and localisation framework based on stacking an

Key features are of the earthquake detection and localisation framework are:

* Earthquake phase detection using machine-learning pickers from [SeisBench](https://github.com/seisbench/seisbench)
* Earthquake phase detection using machine-learning model from [SeisBench](https://github.com/seisbench/seisbench), pre-trained on different data sets.
* [PhaseNet (Zhu and Beroza, 2018](https://doi.org/10.1093/gji/ggy423)
* [EQTransformer (Mousavi et al., 2020)](https://doi.org/10.1038/s41467-020-17591-w)
* [OBSTransformer (Niksejel and Zahng, 2024)](https://doi.org/10.1093/gji/ggae049)
* LFEDetect
* Octree localisation approach for efficient and accurate search
* Different velocity models:
* Constant velocity
* 1D Layered velocity model
* 3D fast-marching velocity model (NonLinLoc compatible)
* Extraction of earthquake event features:
* Local magnitudes
* Ground motion attributes
* Moment Magnitudes (MW) based on modelled peak ground motions
* Local magnitudes (ML), different models
* Ground motion attributes (e.g. PGA, PGV, ...)
* Automatic extraction of modelled and picked travel times
* Calculation and application of station corrections / station delay times
* Station Corrections
* station specific corrections (SST)
* source specific station corrections (SSST)

Qseek is built on top of [Pyrocko](https://pyrocko.org).

Expand Down
8 changes: 5 additions & 3 deletions docs/components/image_function.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

For image functions this version of Qseek relies heavily on machine learning pickers delivered by [SeisBench](https://github.com/seisbench/seisbench).

## PhaseNet Image Function
## SeisBench Image Function

SeisBench offers access to a variety of machine learning phase pickers pre-trained on various data sets.

!!! abstract "Citation PhaseNet"
*Zhu, Weiqiang, and Gregory C. Beroza. "PhaseNet: A Deep-Neural-Network-Based Seismic Arrival Time Picking Method." arXiv preprint arXiv:1803.03211 (2018).*

```python exec='on'
from qseek.utils import generate_docs
from qseek.images.phase_net import PhaseNet
from qseek.images.seisbench import SeisBench

print(generate_docs(PhaseNet()))
print(generate_docs(SeisBench()))
```
2 changes: 1 addition & 1 deletion docs/components/seismic_data.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ To prepare your data for EQ detection and localisation, **organize it in a MiniS
from qseek.utils import generate_docs
from qseek.waveforms.squirrel import PyrockoSquirrel

print(generate_docs(PyrockoSquirrel()))
print(generate_docs(PyrockoSquirrel(persistent="docs")))
```

## Meta Data
Expand Down
14 changes: 9 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,18 @@ The detector is leveraging [Pyrocko](https://pyrocko.org) and [SeisBench](https:
## Features

* [x] Earthquake phase detection using machine-learning pickers from [SeisBench](https://github.com/seisbench/seisbench)
* [x] [PhaseNet (Zhu and Beroza, 2018](https://doi.org/10.1093/gji/ggy423)
* [x] [EQTransformer (Mousavi et al., 2020)](https://doi.org/10.1038/s41467-020-17591-w)
* [x] [OBSTransformer (Niksejel and Zahng, 2024)](https://doi.org/10.1093/gji/ggae049)
* [x] LFEDetect
* [x] Octree localisation approach for efficient and accurate search
* [x] Different velocity models:
* [x] Constant velocity
* [x] 1D Layered velocity model
* [x] 3D fast-marching velocity model (NonLinLoc compatible)
* [x] Constant velocity
* [x] 1D Layered velocity model
* [x] 3D fast-marching velocity model (NonLinLoc compatible)
* [x] Extraction of earthquake event features:
* [x] Local magnitudes
* [x] Ground motion attributes
* [x] Local magnitudes
* [x] Ground motion attributes
* [x] Automatic extraction of modelled and picked travel times
* [x] Calculation and application of station corrections / station delay times
* [ ] Real-time analytics on streaming data (e.g. SeedLink)
Expand Down
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ nav:
- Getting Started 🚀: getting_started.md
- Visualising Detections: visualizing_results.md
- Benchmark: benchmark.md
- Usage:
- Configuration:
- The Search: components/configuration.md
- Seismic Data: components/seismic_data.md
- Ray Tracer: components/ray_tracer.md
Expand Down
35 changes: 23 additions & 12 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ keywords = [
]

dependencies = [
"numpy>=1.17.3",
"numpy>=1.17.3, <2",
"scipy>=1.8.0",
"pyrocko>=2022.06.10",
"seisbench>=0.5.0",
Expand All @@ -45,7 +45,10 @@ dependencies = [
"rich>=13.4",
"nest_asyncio>=1.5",
"pyevtk>=1.6",
"psutil>=5.9",
"aiofiles>=23.0",
"typer >=0.12.3",
"scikit-fmm >= 2024.05",
]

classifiers = [
Expand All @@ -62,18 +65,12 @@ classifiers = [
]

[project.optional-dependencies]
dev = [
"pre-commit>=3.4",
"black>=23.7",
"ruff>=0.1.14",
"pytest>=7.4",
"pytest-asyncio>=0.21",
]
dev = ["pre-commit>=3.4", "ruff>=0.3.0", "pytest>=7.4", "pytest-asyncio>=0.21"]

docs = [
"mkdocs-material>=9.5.13",
"mkdocstrings[python]>=0.23",
"markdown-exec>=1.8.0",
"mkdocs-material>=9.5",
"mkdocstrings[python]>=0.25",
"markdown-exec>=1.9",
]
completion = ["argcomplete>=3.2"]

Expand Down Expand Up @@ -106,13 +103,27 @@ extend-select = [
'I',
'RUF',
'T20',
'D',
]

ignore = ["RUF012", "RUF009"]
ignore = [
"RUF012",
"RUF009",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D107",
]

[tool.ruff]
target-version = 'py311'

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.pytest.ini_options]
markers = ["plot: plot figures in tests"]

Expand Down
Loading
Loading