Monitoring software for the Icarus Pressure Jump apparatus
Project description
Table of Contents
About The Project
The Icarus NMR Pressure Jump Apparatus is a novel device used to rapidly switch the pressure within an NMR sample cell. This enables study of the unfolded protein under native conditions and, vice versa, study of the native protein under denaturing conditions. This project is the second version of a monitoring software for the pressure sensors and digital controls. It is responsible for displaying device readings, controlling and testing hardware, and detecting faults.
Once a DATAQ DI-4108 USB device is detected by the monitoring software, it establishes a connection and begins reading data from the USB device at 4000Hz. The analog and digital channels monitored are as follows:
- Analog:
CH0: target pressure sensor
CH1: depressurization valve lower sensor
CH2: depressurization valve upper sensor
CH3: pressurization valve lower sensor
CH4: pressurization valve upper sensor
CH5: high pressure sensor at the origin
CH6: high pressure sensor at the sample - Digital:
CH0: high pressure pump control
CH1: depressurize valve control
CH2: pressurize valve control
CH4: log control
The data is stored in a circular buffer with a default length of 2 minutes. The data is read by many event handlers which each detect certain features in the readings. They then signal events containing their respective data which may be read by the GUI. The event handlers are as follows:
- Depressurize: detects high to low state transitions in digital CH0
- Pressurize: detects high to low state transitions in digital CH1
- Period: detects consecutive high to low state transitions in digital CH1
- Pressure: detects current pressure of analog CH5
- Pump: detects drops in analog CH0, signifying the pump stroking
- Log: detects state changes in digital CH4
The digital channels may be controlled by the software by sending commands to the DATAQ DI-4108. This is used for the following:
- Toggling the high pressure pump
- Hardware tests under manual device operation
- Shutdowns, either manual or when a fatal error is detected by the Sentry
All events are transmitted to the GUI and are rendered in dedicated event plots, history plots, and status indicators. They are also transmitted to a Sentry module which analyzes them to detect leaks and abnormal behavior. In the event of a serious leak, the device will automatically shut down. Pressurize, depressurize, and period events are also transmitted to a logger, which generates LZMA compressed log files. These files may be opened by the GUI for later viewing.
Built With
Python >=3.10, <=3.12
PySide6
PyQtDarkTheme
poetry
Getting Started
Prerequisites
System Requirements
These instructions are tailored for Ubuntu 24, which is the only operating system tested and supported for this setup.
Installing Python
Ensure you have Python 3.10-3.12 installed on your system. If you do not have Python installed, you can install it using the following commands:
sudo apt update
sudo apt install python3.12
Cloning the Repository
Before you can start setting up your environment, you'll need to clone the repository containing the project. Open your terminal and execute the following command:
git clone https://github.com/SeanIFitch/icarus_v2
cd icarus_v2
Installation
Setting Up Your Environment
- Create a Virtual Environment:
Use a virtual environment to manage dependencies effectively and avoid conflicts between package versions. Run the following command in your project directory to create a virtual environment:
python3.12 -m venv icarus_venv
- Activate the Virtual Environment:
Once the virtual environment is created, activate it with:
source icarus_venv/bin/activate
Installing Dependencies
With the virtual environment activated, you can now install all required packages from required-packages.txt. Install these packages by running:
pip install -r requirements.txt
Usage
To start the application, ensure you have activated the virtual environment:
source icarus_venv/bin/activate
And then, launch the application using:
python3 src/__main__.py
Note: the first time the application is run with a DATAQ connected, it will attempt to install a udev rule to allow access to the USB device. This requires admin permissions. If the application fails to connect to the device after a few seconds, reboot your computer to ensure the udev rules are fully reloaded.
Roadmap
See the open issues for a full list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE.txt
for more information.
Contact
Sean Fitch - seanifitch@gmail.com
Project Link: https://github.com/SeanIFitch/icarus_v2
Acknowledgments
- Dr. Philip Anfinrud - Software specification
- icarus-nmr by Valentyn Stadnytskyi
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
Built Distribution
File details
Details for the file icarus_v2-0.1.0.tar.gz
.
File metadata
- Download URL: icarus_v2-0.1.0.tar.gz
- Upload date:
- Size: 66.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.0-45-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed2450cda5cfcb68b3e57d648121ed3d45cf14812a80554fadb91af9bab835bd |
|
MD5 | 0f20526e16de1f0133d3064579b71e59 |
|
BLAKE2b-256 | fa47d3587aae2fd257dfd61f55a9210c08742c838b7d657a773adaf4a6d5ead4 |
File details
Details for the file icarus_v2-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: icarus_v2-0.1.0-py3-none-any.whl
- Upload date:
- Size: 120.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.0-45-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a945c29552c2f8491f656427d9b2a7957ba55ed085671c826f3566cedc23a751 |
|
MD5 | 99c1999f5178f5c579af31cbfb678c6d |
|
BLAKE2b-256 | f86f744c81929dabf71ec8fe7e6a93758361804e5b7d5aef4001e07e345723d1 |