Table of Contents
Fetching ...

SeismoStats: A Python Package for Statistical Seismology

Aron Mirwald, Nicolas Schmid, Leila Mizrahi, Marta Han, Alicia Rohnacher, Vanille A. Ritz, Stefan Wiemer

TL;DR

SeismoStats addresses the fragmentation of statistical seismology tools by providing a unified, open-source Python package for catalog handling and GR parameter estimation. It introduces a Catalog class and modular analysis, utils, and plotting components, enabling robust estimation of $m_c$, $a$, and $b$, along with multiple completeness and estimator methods such as MAXC, KS, and STAI-inspired approaches. The work emphasizes reproducibility via CI/CD, documentation, and community contributions, and integrates with standard formats and services (QuakeML, FDSN) to streamline seismic catalog analyses. Overall, SeismoStats aims to standardize and extend statistical seismology workflows, facilitating rigorous analysis and collaborative development across the seismological community.

Abstract

We introduce SeismoStats, a Python package that enables essential statistical seismology analyses, with a focus on well-established methods. The package provides user-friendly tools to download and manipulate earthquake catalogs, but also plotting functionalities to visualize them, as well as means to perform analyses such as estimating the a- and b-value of the Gutenberg-Richter law, or estimating the magnitude of completeness of any earthquake catalog. This is the first well-tested, well-documented, and openly accessible Python package with all these features. It is intended to serve as the nucleus of a long-term community effort, continually expanding in functionality through shared contributions. We invite seismologists and developers to contribute ideas and code to support and shape its future development.

SeismoStats: A Python Package for Statistical Seismology

TL;DR

SeismoStats addresses the fragmentation of statistical seismology tools by providing a unified, open-source Python package for catalog handling and GR parameter estimation. It introduces a Catalog class and modular analysis, utils, and plotting components, enabling robust estimation of , , and , along with multiple completeness and estimator methods such as MAXC, KS, and STAI-inspired approaches. The work emphasizes reproducibility via CI/CD, documentation, and community contributions, and integrates with standard formats and services (QuakeML, FDSN) to streamline seismic catalog analyses. Overall, SeismoStats aims to standardize and extend statistical seismology workflows, facilitating rigorous analysis and collaborative development across the seismological community.

Abstract

We introduce SeismoStats, a Python package that enables essential statistical seismology analyses, with a focus on well-established methods. The package provides user-friendly tools to download and manipulate earthquake catalogs, but also plotting functionalities to visualize them, as well as means to perform analyses such as estimating the a- and b-value of the Gutenberg-Richter law, or estimating the magnitude of completeness of any earthquake catalog. This is the first well-tested, well-documented, and openly accessible Python package with all these features. It is intended to serve as the nucleus of a long-term community effort, continually expanding in functionality through shared contributions. We invite seismologists and developers to contribute ideas and code to support and shape its future development.

Paper Structure

This paper contains 14 sections, 13 equations, 5 figures.

Figures (5)

  • Figure 1: An example of an earthquake catalog: The Swiss earthquake catalog for the year 2024 swiss_seismological_service_national_1983. Figure generated using the SeismoStats function plot_in_space. Alt-text: Swiss map with dots whose size corresponds to the earthquake magnitude.
  • Figure 2: Overview of the SeismoStats package. a) Organisation of the subpackages with selected functions. b) Detailed architecture of the Catalog class in which methods can both use and update the catalog’s properties and data. Alt-text: Schematic diagram of the structure of SeismoStats.
  • Figure 3: Visualization of the application of the three completeness estimation methods to the Swiss catalog in the year 2024. The blue squares represent the cumulative FMD, the red triangles the non-cumulative one. The vertical dashed lines indicate the completeness magnitude that was estimated using the different available methods. Figure generated using SeismoStats functions plot_fmd and plot_cum_fmd. Alt-text: The Frequency of earthquakes in relation to their magnitude is shown as scatter plot, together wih dotted lines that the result of three different completeness methods.
  • Figure 4: Example of an estimated b-value fit. The estimator ClassicBValueEstimator was applied, with a bin size of $\Delta m = 0.01$ and assuming an incompleteness of $m_c = 1.6$. The GR-law with the estimated b-value is shown in black, the corresponding cumulative FMD is shown in blue. The dotted line is the extension of the GR to the reference magnitude M=1. Figure generated using SeismoStats function plot_cum_fmd. Alt-text: Plot of the frequency vs the magnitude of earthquakes, together with a line that fits the slope.
  • Figure 5: Illustration of temporal variation of the b-value both for the classical b-value estimate and b-positive using the Swiss earthquake catalog for 2024. On the top panel, the magnitudes over time are shown, figure generated using SeismoStats function plot_mag_in_time. On the bottom panel, the classical b-value and b-positive over time, each b-value is estimated using 100 magnitudes above $m_c$. The b-value plotted at each time is estimated with magnitudes up to that time. This figure was generated using SeismoStats function plot_b_series_constant_nm. Alt-text: (a): scatter plot of magnitudes vs. time, with a dotted line indicating the completeness of 1.1. (b): b-value as a function of time, estimated with the classical and the b-positive method.