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
Metadata
Release files for pyDySP 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pydysp-0.2.2.tar.gz | 50.7 kB | Without provenance | Details for pydysp-0.2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pydysp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details for pydysp-0.2.2-py3-none-any.whl |
Total release size: 98.2 kB
Release files / pydysp-0.2.2.tar.gz
| Download URL | pydysp-0.2.2.tar.gz |
|---|---|
| Size | 50.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95591b9d9ff91bb5846c56ed51df95ca87906469087679f1874269e7cae6c1de
|
|
BLAKE2b-256 checksum How to use checksums |
11dd9246765e72c8cb524d9f4a4823d9fa3d067e3bbcd91bd6179f84869e5af1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Release files / pydysp-0.2.2-py3-none-any.whl
| Download URL | pydysp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 47.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f32c68468a00bdc74e21ce77974e621700faadeaa8ae51cd95e3be641bb24b2b
|
|
BLAKE2b-256 checksum How to use checksums |
d82309bebf80d388dac7df06e5be173bf7821679bd4a8c480f3b4b3026be7caf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Security for pyDySP 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.