Skip to main content

SPECTRUM : Spectral Analysis in Python

https://badge.fury.io/py/spectrum.svg https://github.com/cokelaer/spectrum/actions/workflows/main.yml/badge.svg?branch=main https://coveralls.io/repos/cokelaer/spectrum/badge.png?branch=main https://anaconda.org/conda-forge/spectrum/badges/license.svg https://anaconda.org/conda-forge/spectrum/badges/version.svg https://anaconda.org/conda-forge/spectrum/badges/downloads.svg https://joss.theoj.org/papers/e4e34e78e4a670f2ca9a6a97ce9d3b8e/status.svg
contributions:

Please join https://github.com/cokelaer/spectrum

contributors:

https://github.com/cokelaer/spectrum/graphs/contributors

issues:

Please use https://github.com/cokelaer/spectrum/issues

documentation:

https://pyspectrum.readthedocs.io/

Citation:

Cokelaer et al, (2017), ‘Spectrum’: Spectral Analysis in Python, Journal of Open Source Software, 2(18), 348, doi:10.21105/joss.00348

Overview of PSD methods available in Spectrum

Overview

Spectrum contains tools to estimate Power Spectral Densities using methods based on Fourier transform, parametric methods or eigenvalues analysis:

  • Fourier-based methods: correlogram, periodogram and Welch estimates. Standard tapering windows (Hann, Hamming, Blackman) and more exotic ones are available (DPSS, Taylor, …).

  • Parametric methods: Yule-Walker, BURG, MA and ARMA, covariance and modified covariance methods.

  • Non-parametric (eigenanalysis) methods: MUSIC and minimum variance analysis.

  • Multitapering (MTM).

The targeted audience is diverse. Although the use of power spectrum of a signal is fundamental in electrical engineering (e.g., radio communications, radar), it has a wide range of applications from cosmology (e.g., detection of gravitational waves), to music (pattern detection) or biology (mass spectroscopy).

Quick Start

The example below creates a cosine signal buried in white noise and estimates its power spectral density using a simple periodogram:

from spectrum import Periodogram, data_cosine

# generate a 1024-sample cosine at 200 Hz (amplitude 0.1) buried in white noise
data = data_cosine(N=1024, A=0.1, sampling=1024, freq=200)

# create the periodogram object and plot
p = Periodogram(data, sampling=1024)
p.plot(marker='o')

All PSD classes share the same interface: instantiate the object, run the estimation (or let it run lazily on first access), then call p.plot(). The functional API is also available for all methods when a quick result is needed without a full object.

See the documentation for a complete tutorial, API reference and gallery of examples.

Installation

spectrum is available on PyPI:

pip install spectrum

and on conda-forge:

conda install -c conda-forge spectrum

To install conda itself, see https://docs.conda.io/en/latest/miniconda.html.

Contributions

Please see GitHub for any issues, bugs, comments or contributions.

Changelog (summary)

release

description

0.10.0

  • add python 3.12 and 3.13 support

  • add sos2ss, sos2tf, etc. fix #85, #88

0.9.0

0.8.1

  • move CI to GitHub Actions

  • include Python 3.9 support

  • include PR from tikuma-lshhsc contributor to speedup eigenfre module

  • fix deprecated warnings

Some notebooks (external contributions)

Release files for spectrum 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spectrum 0.10.0
File Size Uploaded
spectrum-0.10.0.tar.gz 233.4 kB Details

Release files / spectrum-0.10.0.tar.gz

Download URL spectrum-0.10.0.tar.gz
Size 233.4 kB
Tags Source
SHA-256 checksum
How to use checksums
8203c2a06004bef60d4dc9c92d4f5c252ccf41b1cfe372ef2e61f01fbfb91c0a
BLAKE2b-256 checksum
How to use checksums
023c95180c5969c8ac658e0e66bc6b4de682764e3a8aa1cb499e1a576ce5ebac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.14

Release history Release notifications | RSS feed

This release

0.10.0 This release

1 release file

0.9.0

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.6

1 release file

0.7.5

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.8

1 release file

0.6.7

1 release file

0.6.6

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.6

1 release file

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.0

1 release file

0.4.5

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page