ObsPy is an open-source project dedicated to provide a Python framework for processing seismological data. It provides parsers for common file formats, clients to access data centers and seismological signal processing routines which allow the manipulation of seismological time series.
The goal of the ObsPy project is to facilitate rapid application development for seismology.
- Getting Started
- Stay Informed, Get in Touch!
- Use Cases / Applications Using ObsPy
- Developer Corner
Please support the project by acknowledging the use of it. This helps us keep it alive. If you use ObsPy (directly or as a dependency of another package) for work resulting in an academic publication, we would be grateful if one of the following papers is cited:
M. Beyreuther, R. Barsch, L. Krischer, T. Megies, Y. Behr and J. Wassermann (2010)
ObsPy: A Python Toolbox for Seismology
SRL, 81(3), 530-533
T. Megies, M. Beyreuther, R. Barsch, L. Krischer, J. Wassermann (2011)
ObsPy – What can it do for data centers and observatories?
Annals Of Geophysics, 54(1), 47-58
L. Krischer, T. Megies, R. Barsch, M. Beyreuther, T. Lecocq, C. Caudron, J. Wassermann (2015)
ObsPy: a bridge for seismology into the scientific Python ecosystem
Computational Science & Discovery, 8(1), 014003
More details on important news/announcement can be found on our discourse forum in the future.
Older News get archived in the News Archive.
[Jul 9 2020] ObsPy discourse has landed!
We started our own self-hosted Discourse server for all discussions around ObsPy: https://discourse.obspy.org/
This replaces our old users mailing list. You can login with existing GitHub, Google or Twitter accounts, or create a new user bound to an email address directly on site.
[Mar 6 2020] Release of ObsPy 1.2.0
This is a major release with a lot of new features, bug fixes, and general improvements and we strongly recommend all users to update. Follow these link to learn more:
The ObsPy Gallery and its related ObsPy Tutorial are maybe the best point to get a first impression of what ObsPy is all about. The tutorial is a collection of short example programs with explanations and program output. For help getting started with Python, have a look at this collection of links to Tutorials.
ObsPy Tutorial notebooks -- and much more on specific seismology topics -- can also be found on Seismo-Live, both as a static preview and as interactively runnable version.
from obspy import read st = read() # load example seismogram st.filter(type='highpass', freq=3.0) st = st.select(component='Z') st.plot()
ObsPy is currently running and tested on Linux (32 and 64 bit), Windows (32 bit and/or 64 bit) and Mac OS X.
ObsPy runs on Python 2.7, 3.5, 3.6, 3.7 and 3.8. We highly recommend and only officially support the latest release of each series. We recommend you use the latest version of python 3 if possible.
For individual users we strongly recommend Installation via Anaconda.
System administrators can also install system packages (where available, see below). Detailed information on installing the latest stable version of ObsPy on various operating systems:
- via Anaconda, a scientific Python distribution (all systems) (works without root access)
- Debian/Ubuntu via the package manager
- Fedora/CentOS via the package manager
- Mac OS X via Homebrew or MacPorts
- Windows from a pre-build package (PyPI) or from source
- FreeBSD via the package manager
- NetBSD via the package manager
- via PyPi or from source, applicable to Linux and OSX
- into an existing Antelope 5.4 on RHEL/CentOS 6
- for a reproducible installation mostly aimed at servers and clusters, have a look at the Salt formula for ObsPy
If you run into problems when following the above installation instructions, you can ask for help in our discourse: https://discourse.obspy.org/c/installation-issues/5
If you intend on making changes to ObsPy or develop for it, read this:
If you intend on performing parallel processing with Python and Obspy, please read the following:
Stay Informed, Get in Touch!
Since July 2020 we also have a discourse at https://discourse.obspy.org/. You can discuss, get in touch with other ObsPy users and ask for help there. This has replaced the old users mailing list. It has the complete users mailing list archive as a read-only category in it, so you can search through older user discussion on there.
It also has a category for announcements. These will be mirrored on the new read-only mailing list (see below) but on our discourse there is the option to comment/reply to announcements and you have full control over what you get email notifications from our discourse for.
Please keep all conversations in English on our discourse forum, thanks!
If you do not want to use the above option to keep in touch and well informed with announcements, you can also subscribe to the new read-only mailing list on the official python.org mailman server. If you are using ObsPy we strongly recommend you join the discourse or at least the mailing list to stay informed. The mailing list will contain important changes and bug fixes and similar announcements only and thus is very low volume.
Follow us on Twitter
For more frequent news and general information on Python in seismology/science, follow us on twitter!
You can also get in touch with people in our gitter chat room: https://gitter.im/obspy/obspy
- for the latest stable release
- for the current developer version
- archive for other versions
Use Cases / Applications Using ObsPy
If you want to showcase and/or discuss your projects built on top of ObsPy, you can now also do so in our Discourse: https://discourse.obspy.org/c/obspy-related-projects/7
Feel free to add your own project to the list.
- hvsrpy - Python package for horizontal-to-vertical spectral ratio processing.
- swprocess - Python package for surface wave processing.
- HiPerSeis - High Performance Seismological Tools
- Antelope Python moment tensor code
- Using ObsPy with py2exe
- Wavesdownloader (on GitHub)
- ADMIRE project
- seedlink plotter
- pyTDMT - Python Time Domain Moment Tensor (on GitHub)
- MSNoise - Monitoring Seismic Velocity Changes using Ambient Seismic Noise (on GitHub)
- Pisces: A practical seismological database library in Python (on GitHub)
- HASHpy: Python wrapped fork of HASH first motion focal mechanism code
- waveloc (on GitHub)
- scisola (on GitHub)
- EQTransformer - AI-based Earthquake Signal Detector and Phase Picker.
- instaseis - Instant Global High Frequency Seismograms
- LASIF - Large-Scale Seismic Inversion Framework
- pyflex - Enhanced port of FLEXWIN
- hypoDDpy - Run hypoDD in a data driven manner.
- wfs_input_generator - Generate input files for many waveform solvers directly from data.
- rf - Calculate receiver functions.
- Qopen - Separation of intrinsic and scattering Q by envelope inversion.
- EQcorrscan - Match-filter earthquake detection
- PhasePApy - a Seismic Phase Picker and Associator program package
- Jane - Document database for Seismology
- MouseTrap - A module for detecting a special type of disturbance (so called mouse, ping, or fling step) in seismic records.
- Lazylyst - A GUI created for time series review, using a flexible framework for new workflows.
- REDPy - A tool for automated detection and analysis of repeating earthquakes in continuous data.
- CodaNorm - A software package for the body-wave attenuation calculation by the coda-normalization method
- ISOLA-ObsPy - A seismic source inversion module. Events are described as point sources with centroid moment tensors.
- pySW4 - Setup, run, post process, and visualize numerical simulations, primarily for SW4.
- yam - Yet another monitoring tool using correlations of ambient noise.
- PyWeed - a cross-platform downloadable app for retrieving event-based seismic data
- SeisTomoPy - Fast visualization, comparison and calculations in global tomographic models
- pygema - Seismic data analysis tool box for volcano monitoring. Routines includes automatic localization of seismic events, computation of RSAM and SSAM, magnitude calculation and sql data management.
- FAST - Unsupervised Large‐Scale Search for Similar Earthquake Signals
- Telewavesim - Python software for teleseismic body wave modeling
- StDb - Simple seismic station tools and database generation
- RfPy - Single-station receiver functions and post-processing
- SplitPy - Teleseismic shear-wave splitting analysis (basic Python translation of SplitLab)
- OBStools - Python software for processing broadband ocean-bottom seismic data
- OrientPy - Seismic station orientation tools
- Ppol - P-wave polarization analysis to determine (mis-)orientations of ocean-bottom and terrestrial seismometers.
- SEISglitch - Package to detect, remove, and plot "glitches" (accleration steps convolved with instrument response), tailored for InSight's seismic data from Mars
- QuakeMigrate - A Python package for automatic earthquake detection and location using waveform migration and stacking.
- noisi - A Python tool for ambient noise correlation modeling
- Pytheas - A Python tool for analyzing shear-wave splitting from local data
- seismatch - A Python framework to perform template matching (aka matched filter detection)
- SeismoPlot - A web tool has been plotting miniseed Time Series and Acceleration Response Spectrum for seismology.
- ObsPlus - A Pandas-centric ObsPy expansion pack.
- FrosPy - A Python toolbox for Earth's free oscillations and normal modes.
General information on how to contribute to the project can be found here.
- Style Guide
- Docs or it doesn't exist!
- ObsPy Git Branching Model
- Doing a new ObsPy release
- Known Python issues
- Performance Tips:
- Testing, Debugging & Profiling
- Sphinx Documentation
- Notes on the performed svn to git migration
- Interesting reading on git, github
- Debian packaging
- How to: Add a new Submodule
- Affiliated Project Guidelines