ulfsri / firepydaq

Facilitated Interface for Recording Experiments (FIRE), a python-based Data Acquisition package for nidaqmx, Alicat, and ThorlabsCLD101X devices.
https://ulfsri.github.io/firepydaq/
GNU General Public License v3.0
1 stars 1 forks source link

“FIREpyDAQ”

![GitHub Release](https://img.shields.io/github/v/release/ulfsri/firepydaq?style=flat-square&labelColor=black&color=blue) ![PyPI - Version](https://img.shields.io/pypi/v/firepydaq?style=flat-square&labelColor=black&color=blue) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/firepydaq?style=flat-square&labelColor=black&color=blue) ![GitHub License](https://img.shields.io/github/license/ulfsri/firepydaq?style=flat-square&labelColor=black&color=blue) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13486708.svg)](https://doi.org/10.5281/zenodo.13486708) [![Pytest](https://github.com/ulfsri/firepydaq/actions/workflows/RunPytest.yml/badge.svg?branch=main)](https://github.com/ulfsri/firepydaq/actions/workflows/RunPytest.yml) ![Coverage](tests/coverage.svg) ![GitHub forks](https://img.shields.io/github/forks/ulfsri/firepydaq?style=flat-square&labelColor=brown&color=green) ![GitHub Repo stars](https://img.shields.io/github/stars/ulfsri/firepydaq?style=flat-square&labelColor=brown&color=green) ![GitHub watchers](https://img.shields.io/github/watchers/ulfsri/firepydaq?style=flat-square&labelColor=brown&color=green) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/ulfsri/firepydaq?style=flat-square&labelColor=brown&color=green)

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,

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.

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.

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.

Additionally, the contributors are grateful for the support from Fire Safety Research Institute, a part of UL Research Institutes, for this project.