Python Dynamic Signal Processing
Project description
pyDySP
Dynamic Signal Processing for Experimental Data
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/.csvI/O). - Clean, readable, notebook-friendly code for research, teaching and reproducible workflows.
- Full internal documentation and example notebooks.
Table of Contents
- pyDySP
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.csvI/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:
-
Fork the repository on GitHub
-
Create a branch for your change
-
Commit your edits with clear messages
-
Run the tests locally:
pip install -e . pip install pytest pytest -q
-
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b80ec3373d71eb3a5cdfd9098c23cd79e1cdfb550eefce0642babb100c73757
|
|
| MD5 |
4074111012663756df888cd68d6e74e9
|
|
| BLAKE2b-256 |
54c3a3a43ab804007643c353b764bdf19023365447c060409572b1ab832dd9f8
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04fa348716407928c445e941a95000949b3b39ec500390b4e32b88c7c11c459d
|
|
| MD5 |
f23de2f9766b5d9c1a0dcbc3e9323f84
|
|
| BLAKE2b-256 |
f4965f7ad9eadb4a37d610aa05a6036d498b07c978ea053f2a9179fc0d0dcb74
|