PYDAQ - Data Acquisition and Experimental Analysis with Python (www.pydaq.org)
PYDAQ is a Python package for data acquisition, signal generation, system identification, digital filtering, and real-time control using Arduino and NI-DAQ devices.
It provides a unified graphical interface, command-line tools, and Jupyter notebook examples for laboratory experiments, rapid prototyping, teaching, and research workflows.
PYDAQ supports the following experimental workflows:
| Capability | Description |
|---|---|
| Data acquisition | Acquire, plot, and save experimental data from Arduino or NI-DAQ boards |
| Signal generation | Send user-defined input signals, including nonlinear excitation signals |
| Step-response experiments | Run automatic step-response tests and save the resulting data |
| PRBS-based experiments | Generate excitation signals for system identification workflows |
| System identification | Estimate linear and nonlinear black-box models from experimental data using SysIdentPy |
| Digital filtering | Apply FIR and IIR filters directly to acquired data in real time |
| PID control | Run real-time or simulated P, PI, PD, and PID control with Ziegler-Nichols tuning |
| LQR control | Simulate or implement Linear Quadratic Regulator control for state-space systems |
| Multi-channel workflows | Work with multiple Arduino or NI-DAQ channels |
| Benchmarking | Estimate the maximum reliable sampling frequency supported by the local system |
Further details about benchmarking are available in the benchmarking documentation.
Install PYDAQ with pip:
pip install pydaqMain dependencies include numpy, scipy, matplotlib, pyserial, nidaqmx, PySide6, sysidentpy, bitarray, and packaging. Specific dependency versions are defined in the project configuration files.
Hardware notes:
- Arduino workflows do not require NI-DAQmx drivers.
- NI-DAQ workflows require the NI-DAQmx drivers.
PYDAQ is tested up to Python 3.14. It may run on newer versions, but without guarantees.
All main workflows are available from a single graphical interface.
Launch the GUI with:
from pydaq.pydaq_global import PydaqGui
PydaqGui()More details are available in the documentation and in the Jupyter notebook examples.
Contributions are welcome. Please read the contribution guide before submitting a pull request.
This is the seminal publication of the PYDAQ project and should be cited in any work that uses PYDAQ.
- Martins, S. A. M. (2023). PYDAQ: Data Acquisition and Experimental Analysis with Python. Journal of Open Source Software, 8(92), 5662. https://doi.org/10.21105/joss.05662
@article{Martins_PYDAQ_Data_Acquisition_2023,
author = {Martins, Samir Angelo Milani},
doi = {10.21105/joss.05662},
journal = {Journal of Open Source Software},
month = dec,
number = {92},
pages = {5662},
title = {{PYDAQ: Data Acquisition and Experimental Analysis with Python}},
url = {https://joss.theoj.org/papers/10.21105/joss.05662},
volume = {8},
year = {2023}
}Additional related publications are available in the papers directory.