Skip to content

pydvma

A Python package for dynamics and vibration measurements and analysis.

About pydvma

This is a modular library for data measurement and analysis in the context of dynamics and vibration, for use in student laboratory experiments as well as for research projects, developed at Cambridge University Engineering Department.

A high-level interface allows straightforward application for common use-cases and a low-level interface provides more control when needed.

The aim is for a library that is simple to use and simple to maintain. It is not a full-featured GUI, but when used in conjunction with Jupyter Notebooks it is intended to provide the best of both worlds: interactive tools for common tasks and a command line interface for customisation.

Features

At present the library has basic functionality for:

  • Logging data using soundcards or National Instruments DAQs
  • Logging with pre-trigger for impulse response measurements
  • Logging with PC generated output (soundcard and NIDAQ)
  • Computing frequency domain data (FFT)
  • Computing transfer function data
  • Computing sonograms/spectrograms
  • Basic modal analysis tools (mode-fitting, damping estimation)
  • Saving and plotting data
  • Export to Matlab and CSV
  • Interactive tools for standard acquisition and analysis
  • Oscilloscope view of input signals

Analyse data in your browser — no install

Saved a dataset in the lab? You can load and analyse it right now at the pydvma browser notebook — Python runs inside your browser (nothing to install, files never leave your machine). Drag your .dvma or .npy file into its file browser and follow the notebook.

Quick Start

Installation

For lab use — GUI plus acquisition backends (soundcard and/or NI-DAQmx):

pip install "pydvma[full]"

Plain pip install pydvma installs the analysis-only core (data structures, FFT/TF/modal analysis, file I/O) with no Qt or hardware dependencies — it runs anywhere, including in-browser via pydvma-lite (see above).

Basic Usage

import pydvma as dvma

%matplotlib widget
settings = dvma.MySettings()
logger = dvma.Logger(settings)

For more detailed instructions, see the Getting Started guide.

Documentation Overview

Contributing

Contributions to this project are welcomed, keeping in mind the project aims above:

  • If you find a bug, please report using GitHub's issue tracker
  • For bug-fixes and refinements: please feel free to clone the repository, make edits and create a pull request with a clear description of changes made
  • If you would like to make a more significant contribution or change, then please be in contact to outline your suggestion

See the Contributing page for more details.

License

This project is licensed under the BSD 3-Clause License - see the License page for details.