FIREpyDAQ is a python based Facilitated Interface for Recording Experiments (FIRE), for devices that are generally used for data acquisition in engineering research. The device list and general requirements are given below.
Using pip
, you can install this package. pip
will also install relevant dependencies.
$ pip install firepydaq
Else, you can clone this repository and use poetry
to compile the project locally.
Once cloned, you can do the following to create a virtual environment using poetry.
# Create and Install package dependencies.
$ poetry install
# To activate the virtual environment, unless the IDE you use automatically does this for you
$ poetry shell
This interface can be used for three types of devices simultaneously,
- NI hardware, which requires installation of NI-DAQmx driver from National Instruments.
- This has been built so far only for Analog Input and Output data.
- Alicat Mass Flow Controllers and Mass Flow Meter, which is based via serial communication and python API available from Numat.
- Thorlabs CLD101X, which is based on serial communication
Please refer to the documentation for additional details.
firepydaq
can be compiled by using one of the following scripts.
# On Windows: Protect your script from importing child processes
# Required if you need dashboard access.
# Dashboard is spawned as a separate process.
if __name__ == "__main__":
from firepydaq.FIREpyDAQ_Acquisition import FIREpyDAQ_Acquisition
FIREpyDAQ_Acquisition()
Alternatively, you can run the following.
# On Windows: Protect your script from importing child processes
# Required if you need dashboard access.
# Dashboard is spawned as a separate process.
if __name__ == "__main__":
import multiprocessing as mp
mp.freeze_support()
from firepydaq.acquisition.acquisition import application
import sys
from PySide6.QTWidgets import QApplication
app = QApplication(sys.argv)
main_app = application()
main_app.show()
sys.exit(app.exec())
Example usage is given in the following two videos. The corresponding files and two snapshots are provided after the video for reference.
Example of NI config that is required to set-up the acquisition. You can formulate your own config file. You can use the NISYSCheck.py
utility to get information of the connected NI device.
# | Panel | Device | Channel | ScaleMax | ScaleMin | Label | Type | TCType | Chart | AIRangeMin | AIRangeMax | Layout | Position | Processed_Unit | Legend |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | cDAQ1Mod1 | ai0 | 1 | 1 | Temperature1 | Thermocouple | K | Temperature | 1 | 1 | 2 | 1 | C | Temperature1 |
1 | 1 | cDAQ1Mod1 | ai2 | 1 | 1 | Temperature2 | Thermocouple | K | Temperature | 1 | 1 | 2 | 1 | C | Temperature2 |
2 | 1 | cDAQ1Mod3 | ai0 | 1 | 0 | Voltage1 | Voltage | NA | V1 | 0 | 1 | 1 | 1 | V | Open V1 |
3 | 1 | cDAQ1Mod3 | ai2 | 1 | 0 | Voltage2 | Voltage | NA | None | 0 | 1 | 1 | 1 | C | Open V2 |
Example of Formulae file that is used to post-process data is display in dashboard is selected.
Label | RHS | Chart | Legend | Layout | Position | Processed_Unit |
---|---|---|---|---|---|---|
TF_mult | 9/5 | None | TF_mult | 1 | 1 | - |
TF_offset | 32 | Constant | TF_mult | 1 | 1 | - |
Temp_F | (Temperature1)*TF_mult + TF_offset | Temperature | Fahrenheit temp | 2 | 2 | F |
T_mean | (Temperature1 + Temperature2)/2 | Mean Temperture | Mean Temp | 1 | 1 | C |
V_mA | Voltage1/1000 | V1 (mV) | Volts | 1 | 1 | mA |
Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
Suggested procedure is given below. Note: Pull request into the main
branch will not be accepted.
- Fork this repository.
- Create a
your_feature
branch from thedev
branch. - Clone your repository on your machine.
- Install poetry using
pipx
as recommended or usingpip
, andmake
(optional). - If you install and configure
make
- runmake build
, which will initiate the commandspoetry build
,poetry lock
, andpoetry install
in succession. This will create a virtual environment for testing your developments. - Alternatively (without
make
), you can run individualpoetry
commands to install the package on a virtual environment (ideal) for local development. - Make your edits, and send a PR following the template.
firepydaq
was created by Dushyant M. Chaudhari. It is licensed under the terms
of the GNU General Public license, v.3.0.
Full citation:
Chaudhari, D. M., & Mishra, A. (2024). FIREpyDAQ: Facilitated Interface for Recording Experiments (FIRE), a python-package for Data Acquisition. (v0.1.0). Zenodo. https://doi.org/10.5281/zenodo.13486708
Bib:
@misc{firepydaq,
title={FIREpyDAQ: Facilitated Interface for Recording Experiments (FIRE), a python-package for Data Acquisition. (v0.1.0)},
url = {https://github.com/ulfsri/firepydaq},
author = {Chaudhari, Dushyant M. and Mishra, Anvii},
publisher = {Zenodo},
doi = {10.5281/zenodo.13486708},
year = {2024}
}
Thanks to the following community guidelines which were immensely helpful while making this package.
- py-pkgs
- Code refinery documentation
- Sphinx documentation
- Sphinx AutoAPI documentation
- Numpy docstrings style guide
- Python packaging guide
- PythonGUIs, by Martin FitzPatrick
Additionally, the contributors are grateful for the support from Fire Safety Research Institute, a part of UL Research Institutes, for this project.