Facilitated Interface for Recording Experiments (FIRE), a python-based Data Acquisition package for nidaqmx, Alicat, and ThorlabsCLD101X devices.
Project description
FIREpyDAQ
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.
Installation
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
Hardware/Communication Requirements
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
Usage
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())
Interface
Example usage is given in the following two videos. The corresponding files and two snapshots are provided after the video for reference.
-
FIREpyDAQ Setup
-
FIREpyDAQ Acquisition and Dashboard
Config and Formulae file
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 |
Contributing
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.
License
firepydaq
was created by Dushyant M. Chaudhari. It is licensed under the terms
of the GNU General Public license, v.3.0.
Citation
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}
}
Acknowledgements
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file firepydaq-0.1.0.post0.tar.gz
.
File metadata
- Download URL: firepydaq-0.1.0.post0.tar.gz
- Upload date:
- Size: 128.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15ec88e54eca2b7f190ef227078dde6d508e6bec0a07ff6196ec55474f259088 |
|
MD5 | b8eca8d602aed3e4ff623f6efb44fe3e |
|
BLAKE2b-256 | 7ebb0a03581dd1689618523a44d5b589b45490607925c81518d73550c0f54f55 |
File details
Details for the file firepydaq-0.1.0.post0-py3-none-any.whl
.
File metadata
- Download URL: firepydaq-0.1.0.post0-py3-none-any.whl
- Upload date:
- Size: 146.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab62ab0f56f8f7daf4e249a2effaa050c83a20ddecb50e2824120b095a90d3d4 |
|
MD5 | 6099ccab9d6bc3f5df505f5b12ff85fc |
|
BLAKE2b-256 | bbe49334eb0fd96926145d4352d6ce4d20ca1fe25badfd89fa69bcc769a2f8b2 |