Skillsbench obspy-data-api
An overview of the core data API of ObsPy, a Python framework for processing seismological data. It is useful for parsing common seismological file formats, or manipulating custom data into standard objects for downstream use cases such as ObsPy's signal processing routines or SeisBench's modeling API.
git clone https://github.com/benchflow-ai/skillsbench
T=$(mktemp -d) && git clone --depth=1 https://github.com/benchflow-ai/skillsbench "$T" && mkdir -p ~/.claude/skills && cp -r "$T/tasks/earthquake-phase-association/environment/skills/obspy-data-api" ~/.claude/skills/benchflow-ai-skillsbench-obspy-data-api && rm -rf "$T"
tasks/earthquake-phase-association/environment/skills/obspy-data-api/SKILL.mdObsPy Data API
Waveform Data
Summary
Seismograms of various formats (e.g. SAC, MiniSEED, GSE2, SEISAN, Q, etc.) can be imported into a
Stream object using the read() function.
Streams are list-like objects which contain multiple
Trace objects, i.e. gap-less continuous time series and related header/meta information.
Each Trace object has the attribute
data pointing to a NumPy ndarray of the actual time series and the attribute stats which contains all meta information in a dict-like Stats object. Both attributes starttime and endtime of the Stats object are UTCDateTime objects.
A multitude of helper methods are attached to
Stream and Trace objects for handling and modifying the waveform data.
Stream and Trace Class Structure
Hierarchy:
Stream → Trace (multiple)
Trace - DATA:
→ NumPy arraydata
:stats
,network
,station
,location
— Determine physical location and instrumentchannel
,starttime
,sampling_rate
,delta
,endtime
— Interrelatednpts
Trace - METHODS:
— Tapers the data.taper()
— Filters the data.filter()
— Resamples the data in the frequency domain.resample()
— Integrates the data with respect to time.integrate()
— Deconvolves the instrument response.remove_response()
Example
A
Stream with an example seismogram can be created by calling read() without any arguments. Local files can be read by specifying the filename, files stored on http servers (e.g. at https://examples.obspy.org) can be read by specifying their URL.
>>> from obspy import read >>> st = read() >>> print(st) 3 Trace(s) in Stream: BW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples BW.RJOB..EHN | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples BW.RJOB..EHE | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples >>> tr = st[0] >>> print(tr) BW.RJOB..EHZ | 2009-08-24T00:20:03.000000Z - ... | 100.0 Hz, 3000 samples >>> tr.data array([ 0. , 0.00694644, 0.07597424, ..., 1.93449584, 0.98196204, 0.44196924]) >>> print(tr.stats) network: BW station: RJOB location: channel: EHZ starttime: 2009-08-24T00:20:03.000000Z endtime: 2009-08-24T00:20:32.990000Z sampling_rate: 100.0 delta: 0.01 npts: 3000 calib: 1.0 ... >>> tr.stats.starttime UTCDateTime(2009, 8, 24, 0, 20, 3)
Event Metadata
Event metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format QuakeML. See
read_events() and Catalog.write() for supported formats.
Event Class Structure
Hierarchy:
Catalog → events → Event (multiple)
Event contains:
→origins
(multiple)Origin
,latitude
,longitude
,depth
, ...time
→magnitudes
(multiple)Magnitude
,mag
, ...magnitude_type
picksfocal_mechanisms
Station Metadata
Station metadata are handled in a hierarchy of classes closely modelled after the de-facto standard format FDSN StationXML which was developed as a human readable XML replacement for Dataless SEED. See
read_inventory() and Inventory.write() for supported formats.
Inventory Class Structure
Hierarchy:
Inventory → networks → Network → stations → Station → channels → Channel
Network:
,code
, ...description
Station:
,code
,latitude
,longitude
,elevation
,start_date
, ...end_date
Channel:
,code
,location_code
,latitude
,longitude
,elevation
,depth
,dip
,azimuth
,sample_rate
,start_date
,end_date
, ...response
Classes & Functions
| Class/Function | Description |
|---|---|
| Read waveform files into an ObsPy object. |
| List-like object of multiple ObsPy objects. |
| An object containing data of a continuous series, such as a seismic trace. |
| A container for additional header information of an ObsPy object. |
| A UTC-based datetime object. |
| Read event files into an ObsPy object. |
| Container for objects. |
| Describes a seismic event which does not necessarily need to be a tectonic earthquake. |
| Function to read inventory files. |
| The root object of the → → hierarchy. |
Modules
| Module | Description |
|---|---|
| Module for handling ObsPy and objects. |
| Module for handling ObsPy objects. |
| Module containing a UTC-based datetime class. |
| Module handling event metadata. |
| Module for handling station metadata. |
| Various utilities for ObsPy. |
| Tools for creating and merging previews. |