Skip to content

samirmartins/pydaq

Repository files navigation

PYDAQ

PyPI version License python status contributors downloads openissues issuesclosed forks stars

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.


Capabilities

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.


Installation

Install PYDAQ with pip:

pip install pydaq

Main 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.


Graphical user interface

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.


Screenshots

PYDAQ graphical interface


Contributing

Contributions are welcome. Please read the contribution guide before submitting a pull request.


Citation

DOI

This is the seminal publication of the PYDAQ project and should be cited in any work that uses PYDAQ.

@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.

About

Data Acquisition and Experimental Analysis with Python and Graphical User Interface

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages