Skip to main content

Signal processing for field and experimental data for earthquake engineering

Project description

Testing Status PyPi version License ECP project DOI


A Python package for seismic signal processing.


This package provides common functions for computing ground motion parameters and performing signal processing. The functions are implemented on either numpy arrays or on a signal object that uses caching to avoid expensive recalculation of widely used parameters.

  • Compute the acceleration response spectrum and elastic response time series using the fast Nigam and Jennings (1968) algorithm.
  • Compute the Fourier amplitude spectrum (using the scipy.signal.fft algorithm)
  • Compute the smooth Fourier amplitude spectrum according to Konno and Ohmachi (1998)
  • Compute velocity and displacement from acceleration time series
  • Compute peak ground motion quantities (PGA, PGV, PGD)
  • Compute common ground motion intensity measures (Arias intensity, CAV, CAV_dp5, significant duration, bracketed duration, dominant period)
  • Compute signal features (zero crossings, global peaks, local peaks)
  • Compute rotated ground motion or intensity measure from two ground motion components
  • Resampling of ground motion through interpolation or periodic resampling
  • Butterworth filter (using scipy), running average, polynomial fitting
  • Fast loading of, and saving of, plain text to and from Signal objects

How to Use

[Eqsig documentation](


Generate response spectra

import numpy as np
import matplotlib.pyplot as plt
import eqsig.single

bf, sub_fig = plt.subplots()
a = np.loadtxt("<path-to-acceleration-time-series>")
dt = 0.005  # time step of acceleration time series
periods = np.linspace(0.2, 5, 100)  # compute the response for 100 periods between T=0.2s and 5.0s
record = eqsig.AccSignal(a * 9.8, dt)
times = record.response_times

sub_fig.plot(times, record.s_a, label="eqsig")

Useful material


How do I get set up?

  1. Run pip install -r requirements.txt

Package conventions

  • A function that calculates a property the takes a signal as an input, should be named as calc_<property>, if the calculation has multiple different implementations, then include the citation as author and year as well calc_<property>_<author>_<year>
  • If the function takes a raw array then it should contain the word array (or values or vals).


Tests are run with pytest

  • Locally run: pytest on the command line.
  • Tests are run on every push using travis, see the .travis.yml file


To deploy the package to you need to:

  1. Push to the pypi branch. This executes the tests on
  2. Create a git tag and push to github, run: or manually:
git tag 0.5.2 -m "version 0.5.2"
git push --tags origin pypi


Built via Sphinx following:

For development mode

  1. cd to docs
  2. Run make html

Docstrings follow numpy convention (in progress):

To fix long_description in pip install collective.checkdocs, python checkdocs

Release instructions

On use the github integration tool, click on the eqsig package and click create new release.


1.1.1 (2019-10-29)

  • Fixed issue in get_zero_crossings_array_indices where it would fail if array did not contain any zeros.
  • Added calculation of equivalent number of cycles and equivalent uniform amplitude using power law relationship as intensity measures
  • Added function get_n_cyc_array to compute number of cycles series from a loading series
  • Added intensity measure im.calc_unit_kinetic_energy() to compute the cumulative change in kinetic energy according to Millen et al. (2019)
  • Added with calculation of surface energy and cumulative change in surface energy time series versus depth from surface

1.1.0 (2019-10-08)

  • Fixed issue with second order term in sdof response spectrum calculation which effected high frequency response, updated example to show difference

1.0.0 (2019-07-01)

  • First production release

Project details

Download files

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

Files for eqsig, version 1.1.1
Filename, size File type Python version Upload date Hashes
Filename, size eqsig-1.1.1.tar.gz (29.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page