sonify

Documentation status Build status Test coverage Link to Black Link to isort

sonify “squeezes” seismic or infrasound signals into audible frequencies and creates animated spectrograms to accompany the audio. Data are pulled from any of the FDSN data centers available through the Incorporated Research Institutions for Seismology (IRIS) Data Management Center (DMC) fedcatalog web service.

Screenshot of example

sonify won an Honorable Mention in the 2020 SciPy John Hunter Excellence in Plotting Contest (JHEPC).

Quickstart

  1. Obtain

    git clone https://github.com/liamtoney/sonify.git
    cd sonify
    
  2. Create environment, install, and activate (install conda first, if necessary)

    conda env create
    conda activate sonify
    
  3. Run using the Python interpreter

    python
    >>> from sonify import sonify
    

    or via the command-line interface

    sonify --help
    

Example

To make a movie of the seismic signal generated by a massive avalanche occurring in Alaska on 21 June 2019, sped up by a factor of 200:

from sonify import sonify
from obspy import UTCDateTime

sonify(
    network='AV',
    station='ILSW',
    channel='BHZ',
    starttime=UTCDateTime(2019, 6, 20, 23, 10),
    endtime=UTCDateTime(2019, 6, 21, 0, 30),
    freqmin=1,
    freqmax=23,
    speed_up_factor=200,
    fps=1,  # Use fps=60 to ~recreate the JHEPC entry (slow to save!)
    spec_win_dur=8,
    db_lim=(-180, -130),
)

Or (equivalently), via the command-line interface:

sonify AV ILSW BHZ 2019-06-20T23:10 2019-06-21T00:30 --freqmin 1 --freqmax 23 --speed_up_factor 200 --fps 1 --spec_win_dur 8 --db_lim -180 -130

The result is a 4K 1fps video file named AV_ILSW_BHZ_200x.mp4. A screenshot of the movie is shown at the top of this README.

Documentation

Application programming interface (API) documentation for the module is available here. For command-line usage instructions, type sonify --help (the sonify conda environment must be active).

Contributing

If you notice a bug with sonify (or if you’d like to request/propose a new feature), please create an issue on GitHub (preferred) or email me at liam@liam.earth. You are also welcome to create a pull request. Please don’t allow imposter syndrome to obstruct you from contributing your valuable ideas and skills to this project — I’m happy to help you contribute in any way I can.