Metadata-Version: 2.4
Name: qseek
Version: 0.4.2
Summary: qseek - Data-driven Earthquake Detection
Author-email: Marius Paul Isken <marius.isken@gfz.de>
Maintainer-email: Marius Paul Isken <marius.isken@gfz.de>
License: GPLv3
Project-URL: Documentation, https://pyrocko.github.io/qseek/
Project-URL: GitHub, https://github.com/pyrocko/qseek
Project-URL: Issues, https://github.com/pyrocko/qseek/issues
Keywords: seismology,earthquakes,seismicity,detection,localization,stacking-migration,delay and sum,beamforming
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS
Classifier: Typing :: Typed
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2.3
Requires-Dist: scipy>=1.16
Requires-Dist: pyrocko>=2025.12
Requires-Dist: seisbench>=0.12
Requires-Dist: pydantic>=2.13
Requires-Dist: aiohttp>=3.14
Requires-Dist: aiohttp_cors>=0.7.0
Requires-Dist: lru-dict>=1.4.1
Requires-Dist: rich>=15.0
Requires-Dist: nest_asyncio>=1.5
Requires-Dist: pyevtk>=1.6
Requires-Dist: psutil>=7.0
Requires-Dist: aiofiles>=23.0
Requires-Dist: scikit-fmm>=2025.1
Requires-Dist: eikonalfm>=0.9.9
Requires-Dist: sdnotify>=0.3.0
Requires-Dist: fudgeo>=1.5
Requires-Dist: scikit-learn>=1.9
Provides-Extra: ui
Requires-Dist: plotly>=6.6.0; extra == "ui"
Requires-Dist: nicegui>=3.15; extra == "ui"
Requires-Dist: asyncssh>=2.22; extra == "ui"
Requires-Dist: rfc3986>=2.0.0; extra == "ui"
Requires-Dist: watchfiles>=1.1; extra == "ui"
Requires-Dist: scikit-learn>=1.9; extra == "ui"
Requires-Dist: babel>=2.18; extra == "ui"
Provides-Extra: docs
Requires-Dist: griffe-pydantic>=1.3; extra == "docs"
Requires-Dist: markdown-exec[ansi]>=1.12; extra == "docs"
Requires-Dist: mkdocstrings-python>=2.0; extra == "docs"
Requires-Dist: zensical>=0.0.67; extra == "docs"
Provides-Extra: dev
Requires-Dist: prek>=0.2.25; extra == "dev"
Requires-Dist: pytest>=8.3.5; extra == "dev"
Requires-Dist: pytest-asyncio>=1.3; extra == "dev"
Requires-Dist: pytest-benchmark>=5.0; extra == "dev"
Requires-Dist: pytest-cov>=7.0; extra == "dev"
Requires-Dist: ruff>=0.14; extra == "dev"
Provides-Extra: completion
Requires-Dist: argcomplete>=3.2; extra == "completion"
Dynamic: license-file

# Qseek

*Data-driven earthquake detection and localization*

[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
[![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![prek](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json)](https://github.com/j178/prek)
[![Python 3.12+](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://python.org/)
[![PyPI - Version](https://img.shields.io/pypi/v/qseek)](https://pypi.org/project/qseek/)
[![Documentation](https://img.shields.io/badge/read-documentation-blue)](https://pyrocko.github.io/qseek/)

Qseek detects and locates earthquakes in large seismic data sets. It stacks machine learning phase annotations along modeled travel times and focuses an adaptive octree on the seismic sources, in continuous archives and in real time.

![Earthquakes detected by Qseek on the Reykjanes Peninsula](docs/images/reykjanes-demo.webp)

*More than 30 000 earthquakes detected during the 2020 unrest on the Reykjanes Peninsula, Iceland.*

## Features

- Phase detection with machine learning pickers from [SeisBench](https://github.com/seisbench/seisbench), pre-trained on different data sets:
  - [PhaseNet (Zhu and Beroza, 2019)](https://doi.org/10.1093/gji/ggy423)
  - [EQTransformer (Mousavi et al., 2020)](https://doi.org/10.1038/s41467-020-17591-w)
  - [OBSTransformer (Niksejel and Zhang, 2024)](https://doi.org/10.1093/gji/ggae049)
  - LFEDetect
- STA/LTA phase detection, adapted from [QuakeMigrate](https://github.com/QuakeMigrate/QuakeMigrate)
- Travel times:
  - Constant velocity
  - 1D layered velocity models (fast marching and Pyrocko Cake)
  - 3D fast marching velocity models (NonLinLoc compatible)
- Magnitudes and other event features:
  - Local magnitudes (ML) with regional attenuation models
  - Moment magnitudes (Mw) from modeled peak amplitudes ([Dahm et al., 2024](https://doi.org/10.26443/seismica.v3i2.1205))
  - Ground motions (PGA, PGV)
- Station corrections:
  - SST: station-specific corrections
  - SSST: source-specific station corrections
- Real-time monitoring of SeedLink streams with alerts
- A web UI to explore the detections

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

## Documentation

The documentation is at <https://pyrocko.github.io/qseek/>.

## Installation

Install Qseek from [PyPI](https://pypi.org/project/qseek/):

```sh
pip install qseek
```

Pre-built packages are available for Linux (x86_64, aarch64) and macOS 15 or newer (arm64, x86_64). The x86_64 packages require a CPU with AVX2 and FMA; on older CPUs, install from source with `pip install --no-binary qseek qseek`.

Install the development version from GitHub:

```sh
pip install git+https://github.com/pyrocko/qseek
```

## Quick start

Create a configuration, add your stations, waveform data and velocity model, and start the search:

```sh
qseek config > my-search.json
qseek search my-search.json
```

The detections are written into the run directory `my-search/`.

## Development

Install Qseek from the repository with [uv](https://github.com/astral-sh/uv) and set up the [prek](https://github.com/j178/prek) hooks:

```sh
cd qseek
uv sync --dev
prek install
```

Contributions and merge requests are welcome!

## Citation

Please cite Qseek as:

> Isken, M., Niemz, P., Münchmeyer, J., Büyükakpınar, P., Heimann, S., Cesca, S., Vasyura-Bathke, H., & Dahm, T. (2025). Qseek: A data-driven Framework for Automated Earthquake Detection, Localization and Characterization. Seismica, 4(1). <https://doi.org/10.26443/seismica.v4i1.1283>

## License

Qseek was written by Marius Paul Isken and is licensed under the GNU General Public License v3.
