Skip to main content

Python Dynamic Signal Processing

Project description

pyDySP

Dynamic Signal Processing for Experimental Data

Tests Docs PyPI Status Maintenance License Binder

pyDySP is a lightweight Python library for dynamic signal processing of experimental data, developed for
the EQUALS and SoFSI Laboratories at the University of Bristol.

It provides:

  • A Channel class for time-history signals
    (processing, spectra, trimming, Arias, response spectra, plots, metadata).
  • A Test class for multi-channel experiments
    (selection, batch processing, cross-spectra, transfer functions, modal analysis via sdypy, plotting utilities, .mat/.csv I/O).
  • Clean, readable, notebook-friendly code for research, teaching and reproducible workflows.
  • Full internal documentation and example notebooks.

Table of Contents

Installation

Option A — Install from PyPI (recommended)

pip install pydysp

For Jupyter notebooks:

pip install ipykernel

Option B — Developer installation (editable)

git clone https://github.com/dkaramitros/pyDySP.git
cd pyDySP
pip install -e .

Option C — Use directly from a folder

import sys
sys.path.append("/path/to/parent/of/pydysp")
from pydysp import Channel, Test

Environment Setup

Virtual environment (venv)

python -m venv .venv
source .venv/bin/activate      # Linux/Mac
.venv\Scripts\activate         # Windows
pip install pydysp

Conda / Mamba environment

conda create -n pydysp python=3.11 pip
conda activate pydysp
pip install pydysp

To create the environment from the environment.yml file:

conda env create -f environment.yml
# replace with environment-dev.yml for development
conda activate pydysp

Dependencies

Required:

  • numpy
  • scipy
  • matplotlib
  • tabulate

Optional (for modal analysis):

pip install sdypy-EMA

Quick Start

Single channel

from pydysp import Channel
import numpy as np

dt = 0.01
t = np.arange(0, 10, dt)
y = np.sin(2*np.pi*2*t)

ch = Channel(data=y, dt=dt, name_user="Acc1", quantity="acceleration", units="g")
ch.plot()
t_proc, y_proc = ch.processed()

Multi-channel test

from pydysp import Test

test = Test.from_channels(name="MyTest", channels=[ch1, ch2])
print(test.info())
test.plot_channels(ncols=2)

Spectra & trimming

spec = ch.fourier()
f_peak, s_peak = spec.peak()

ch_trim = ch.trim_by_arias()

Response spectrum

rs = ch.response_spectrum()
rs.plot(y="Sa", logx=True)

Transfer functions

f, H = test.transfer_function("Shaker", "Acc1", kind="H1")

Channel health

print(test.channel_health())

Modal identification (optional)

model = test.ema_model(input="Shaker", outputs=["Acc1","Acc2"], lower=2, upper=40)
model.get_poles()
model.select_poles()
model.print_modal_data()

Features

Channel

  • Drift correction, filtering, baseline correction
  • Trimming (threshold, fraction, Arias)
  • Fourier & Welch spectra
  • Arias intensity
  • Response spectrum
  • Time-domain metrics
  • Metadata support
  • Plot utilities

Test

  • Channel selection (by index, name, tags, slices)
  • Batch processing
  • Cross-spectra, transfer functions, delays
  • Modal analysis (via sdypy)
  • .mat (SoFSI/EQUALS) and .csv I/O
  • Grid plots & channel summary tables
  • Health diagnostics

Example Notebooks

Located in:

examples/

Documentation

https://pydysp.readthedocs.io/en/latest/

Contributing

Contributions are very welcome — whether bug reports, small fixes, feature ideas, or full pull requests.

To contribute:

  1. Fork the repository on GitHub

  2. Create a branch for your change

  3. Commit your edits with clear messages

  4. Run the tests locally:

    pip install -e .
    pip install pytest
    pytest -q
    
  5. Open a Pull Request describing the change and its motivation

Please keep code style readable and consistent with the existing project
(docstrings, small focused functions, and meaningful error messages).

If you prefer to discuss an idea before writing code, feel free to open a GitHub Issue.

License

MIT License

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

pydysp-0.2.1.tar.gz (49.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydysp-0.2.1-py3-none-any.whl (46.5 kB view details)

Uploaded Python 3

File details

Details for the file pydysp-0.2.1.tar.gz.

File metadata

  • Download URL: pydysp-0.2.1.tar.gz
  • Upload date:
  • Size: 49.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pydysp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 7b80ec3373d71eb3a5cdfd9098c23cd79e1cdfb550eefce0642babb100c73757
MD5 4074111012663756df888cd68d6e74e9
BLAKE2b-256 54c3a3a43ab804007643c353b764bdf19023365447c060409572b1ab832dd9f8

See more details on using hashes here.

File details

Details for the file pydysp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: pydysp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 46.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for pydysp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 04fa348716407928c445e941a95000949b3b39ec500390b4e32b88c7c11c459d
MD5 f23de2f9766b5d9c1a0dcbc3e9323f84
BLAKE2b-256 f4965f7ad9eadb4a37d610aa05a6036d498b07c978ea053f2a9179fc0d0dcb74

See more details on using hashes here.

Supported by

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