Skip to main content

Facilitated Interface for Recording Experiments (FIRE), a python-based Data Acquisition package for nidaqmx, Alicat, and ThorlabsCLD101X devices.

Project description

“FIREpyDAQ”

GitHub Release PyPI - Version PyPI - Python Version GitHub License DOI

Pytest Coverage

GitHub forks GitHub Repo stars GitHub watchers GitHub commit activity

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 Setup Video

  • FIREpyDAQ Acquisition and Dashboard FIREpyDAQ Acquisition Video

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 the dev branch.
  • Clone your repository on your machine.
  • Install poetry using pipx as recommended or using pip, and make (optional).
  • If you install and configure make - run make build, which will initiate the commands poetry build, poetry lock, and poetry install in succession. This will create a virtual environment for testing your developments.
  • Alternatively (without make), you can run individual poetry 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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firepydaq-0.1.0.post0.tar.gz (128.5 kB view details)

Uploaded Source

Built Distribution

firepydaq-0.1.0.post0-py3-none-any.whl (146.3 kB view details)

Uploaded Python 3

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

Hashes for firepydaq-0.1.0.post0.tar.gz
Algorithm Hash digest
SHA256 15ec88e54eca2b7f190ef227078dde6d508e6bec0a07ff6196ec55474f259088
MD5 b8eca8d602aed3e4ff623f6efb44fe3e
BLAKE2b-256 7ebb0a03581dd1689618523a44d5b589b45490607925c81518d73550c0f54f55

See more details on using hashes here.

File details

Details for the file firepydaq-0.1.0.post0-py3-none-any.whl.

File metadata

File hashes

Hashes for firepydaq-0.1.0.post0-py3-none-any.whl
Algorithm Hash digest
SHA256 ab62ab0f56f8f7daf4e249a2effaa050c83a20ddecb50e2824120b095a90d3d4
MD5 6099ccab9d6bc3f5df505f5b12ff85fc
BLAKE2b-256 bbe49334eb0fd96926145d4352d6ce4d20ca1fe25badfd89fa69bcc769a2f8b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page