Skip to main content

A Python package for reading and writing miniSEED formatted data

Project description

mseedlib - a Python package to read and write miniSEED formatted data

The mseedlib package allows for reading and writing of miniSEED formatted data, which is commonly used for seismological and other geophysical time series data.

The module leverages the C-language libmseed for most of the heavy data format and manipulation work.

Installation

The releases should be installed directly from PyPI with, for example, pip install mseedlib. The package does not depend on anything other than the Python standard library.

Example usage

Working programs for a variety of use cases ca be found in the examples directory of the repository.

Read a file and print details from each record:

from mseedlib import MS3RecordReader,TimeFormat

input_file = 'testdata-3channel-signal.mseed3'

with MS3RecordReader(input_file) as msreader:
    for msr in msreader:
        # Print values directly
        print(f'   SourceID: {msr.sourceid}, record length {msr.reclen}')
        print(f' Start Time: {msr.starttime_str(timeformat=TimeFormat.ISOMONTHDAY_SPACE_Z)}')
        print(f'    Samples: {msr.samplecnt}')

        # Alternatively, use the library print function
        msr.print()

Read a file into a trace list and print the list:

from mseedlib import MSTraceList

input_file = 'testdata-3channel-signal.mseed3'

mstl = MSTraceList(input_file)

# Print the trace list using the library print function
mstl.print(details=1, gaps=True)

# Alternatively, traverse the data structures and print each trace ID and segment
for traceid in mstl.traceids():
    print(traceid)

    for segment in traceid.segments():
        print('  ', segment)

Writing miniSEED requires specifying a "record handler" function that is a callback to consume, and do whatever you want, with generated records.

Simple example of writing multiple channels of data:

import math
from mseedlib import MSTraceList, timestr2nstime

# Generate synthetic sinusoid data, starting at 0, 45, and 90 degrees
data0 = list(map(lambda x: int(math.sin(math.radians(x)) * 500), range(0, 500)))
data1 = list(map(lambda x: int(math.sin(math.radians(x)) * 500), range(45, 500 + 45)))
data2 = list(map(lambda x: int(math.sin(math.radians(x)) * 500), range(90, 500 + 90)))

mstl = MSTraceList()

sample_rate = 40.0
start_time = timestr2nstime("2024-01-01T15:13:55.123456789Z")
format_version = 2
record_length = 512

# Add synthetic data to the trace list
mstl.add_data(sourceid="FDSN:XX_TEST__B_S_0",
              data_samples=data0, sample_type='i',
              sample_rate=sample_rate, start_time=start_time)

mstl.add_data(sourceid="FDSN:XX_TEST__B_S_0",
              data_samples=data1, sample_type='i',
              sample_rate=sample_rate, start_time=start_time)

mstl.add_data(sourceid="FDSN:XX_TEST__B_S_0",
              data_samples=data2, sample_type='i',
              sample_rate=sample_rate, start_time=start_time)

# Record handler called for each generated record
def record_handler(record, handler_data):
    handler_data['fh'].write(record)

output_file = 'output.mseed'

with open(output_file, 'wb') as file_handle:
  # Generate miniSEED records
  mstl.pack(record_handler,
            {'fh':file_handle},
            flush_data=True)

Package design rationale

The package functionality and exposed API are designed to support the most common use cases of reading and writing miniSEED data using libmseed. Extensions of data handling beyond the functionality of the library are out-of-scope for this package. Furthermore, the naming of functions, classes, arguments, etc. follows the naming used in the library in order to reference their fundamentals at the C level if needed; even though this leaves some names distinctly non-Pythonic.

In a nutshell, the goal of this package is to provide just enough of a Python layer to libmseed to handle the most common cases of miniSEED data without needing to know any of the C-level details.

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (C) 2024 Chad Trabant, EarthScope Data Services

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mseedlib-0.0.6.tar.gz (1.3 MB view details)

Uploaded Source

Built Distributions

mseedlib-0.0.6-py3-none-win_amd64.whl (294.8 kB view details)

Uploaded Python 3 Windows x86-64

mseedlib-0.0.6-py3-none-win32.whl (294.8 kB view details)

Uploaded Python 3 Windows x86

mseedlib-0.0.6-py3-none-musllinux_1_2_x86_64.whl (246.9 kB view details)

Uploaded Python 3 musllinux: musl 1.2+ x86-64

mseedlib-0.0.6-py3-none-musllinux_1_2_i686.whl (285.2 kB view details)

Uploaded Python 3 musllinux: musl 1.2+ i686

mseedlib-0.0.6-py3-none-musllinux_1_2_aarch64.whl (249.0 kB view details)

Uploaded Python 3 musllinux: musl 1.2+ ARM64

mseedlib-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (243.5 kB view details)

Uploaded Python 3 manylinux: glibc 2.17+ x86-64

mseedlib-0.0.6-py3-none-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl (276.1 kB view details)

Uploaded Python 3 manylinux: glibc 2.12+ i686 manylinux: glibc 2.17+ i686

mseedlib-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (241.2 kB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

mseedlib-0.0.6-py3-none-macosx_14_0_arm64.whl (209.9 kB view details)

Uploaded Python 3 macOS 14.0+ ARM64

mseedlib-0.0.6-py3-none-macosx_13_0_x86_64.whl (228.4 kB view details)

Uploaded Python 3 macOS 13.0+ x86-64

File details

Details for the file mseedlib-0.0.6.tar.gz.

File metadata

  • Download URL: mseedlib-0.0.6.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for mseedlib-0.0.6.tar.gz
Algorithm Hash digest
SHA256 ceea0ea9fee075f5c3222837d23f2c196f7dd6012bdd96f3c54fc72ef0d1c540
MD5 7e01f2918e2ade58792dba1d5a6930ac
BLAKE2b-256 ba627cba66383ef3a69cda24aeadc9b1af79ce1a80f4161c14f316163fd7880d

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-win_amd64.whl.

File metadata

  • Download URL: mseedlib-0.0.6-py3-none-win_amd64.whl
  • Upload date:
  • Size: 294.8 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for mseedlib-0.0.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a04a2bc202ee547affdc916616a7ce93537890f189e5616df2900fa8cd0a92b5
MD5 2be33a8f762417064bce0c06f940f9db
BLAKE2b-256 90e486abaa71d9c29f7a9849c22b3475c60e39a90b47692fd5be2e5f178364e4

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-win32.whl.

File metadata

  • Download URL: mseedlib-0.0.6-py3-none-win32.whl
  • Upload date:
  • Size: 294.8 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for mseedlib-0.0.6-py3-none-win32.whl
Algorithm Hash digest
SHA256 799bdc70c85e3a60943ee596c8ddd8e79a2268966faecba86e61c226b15dcdd7
MD5 ec6731107fd9a9850fea0df3fab9d92d
BLAKE2b-256 0983f892c6f9952564b1dd07ade5c0dda9eb0077042b8eb2681037c60df501d6

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2e4b6c98c8bfa9e0d3a83b8a174cb92e62b90b12083da4f5f3070f8789a588e1
MD5 eaaeba8d79ee4d52003bef3424c8ff6f
BLAKE2b-256 5cea661e34bcbca3441f9428d2eca66a820055260b57975da6f2ee8c9c374410

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f8d92ea72ca98966fd76e3eff375dfaf62b4baa685bc3377940a2435889d944f
MD5 ffe23cda2de59a29c2cb4810493851af
BLAKE2b-256 9ecafcf338b4a17237471c9a7b67dffe1e6d91138b5e2b67bb9ff3620e2dfda5

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c5e5c1a8390d3626f7742195777c880a7a9d3b7e618bfb640c6507659831c9ab
MD5 206b12174029bedfc7c276ca8037e1d5
BLAKE2b-256 9c116b4f1f344143bde8c86e739723c1973c1377ec446dc37d11e3d76bb1868c

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2abc5f419afeb066c8c50e5054d282117675eb6846abee36d802beb381d5a0a6
MD5 d82c6fc674c3618a9e710164ed6a4aad
BLAKE2b-256 deec086b18cfe3593480a0bc57aa4949b1d2317bc2a10fb86b1ed67cd3148fee

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-manylinux_2_17_i686.manylinux_2_12_i686.manylinux2010_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b7dd8a0519363366403008c56889610967f02d20780c0fd6d6152eb577afce19
MD5 68f35ebeb9d966930b62029b41d809ce
BLAKE2b-256 b140b9de8703584ab7771613f0ace139bf14697fa895196bbf37278397a3dce9

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c670248496960b765ff7f371b3218dcc793474d97c86d28cdf3fbd7ca6444c98
MD5 7b846b18e484b0a23cdf892c58ec8ca2
BLAKE2b-256 5ef9b601d714a7e19b726e501c49480429a0d523593ccd70d4189a91b55b58e6

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2f3d71f45490cc89ab62ffc58972da85d7f088147670a7dee2a5a0f184a946ef
MD5 d1de610bf849cd7c164012766f389111
BLAKE2b-256 203859c56c759562eff9de37cc0755f98fd44db859e6d5bdb1253312db1abffd

See more details on using hashes here.

File details

Details for the file mseedlib-0.0.6-py3-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for mseedlib-0.0.6-py3-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8c369786635f0de89c6790fef94dfb341ea564aaee99a956fe5fe7913f233db1
MD5 2158859cb7137aa409db908e746c3572
BLAKE2b-256 b62f585c60f7875afd98f1aba44b7185253c08ea63fb05e211bc3c3c35efe7d7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page