Skip to main content

A versatile, extensible, and performant cross-platform app for biomedical and human-computer interface instrumentation control

Project description

BioView

License: GPL v3

BioView is a versatile, extensible, and performant cross-platform app for biomedical and human-computer interface instrumentation control, including Ettus USRPs and BIOPAC devices.

Features

  • Real-time USRP Control: Interface with Ettus USRP devices for high-throughput transceiving
  • BIOPAC Integration: Synchronized physiological data collection alongside RF measurements
    • You must already possess a copy of the BIOPAC Hardware API purchased from BIOPAC Systems Inc. for this to work
  • Live Data Visualization: Sensor data is visualized in real-time
  • Synchronized Data Acquisition: Save synchronized hardware data streams with precise timing control
  • Experiment Management: Configure and control experimental routines and settings
  • Event Annotation: Mark and annotate events during data collection
  • Multi-format Data Storage: Flexible data saving with multiple format support

Installation

BioView should run on all platforms but is officially supported on the following platforms -

  • Windows
  • Linux: Ubuntu LTS, Debian, and derivative distributions.
    • Fedora and RHEL based distributions do not bundle in Python bindings for uhd and require manually buildng from source.
    • Non-LTS versions of Ubuntu are not supported due to missing packages.

Dependencies

  • Python: Ensure Python 3.12 is installed on your system. For Windows, use the Microsoft Store app instead of the website executable.
  • UHD: You can install it by following the official instructions for your operating system.
  • UHD Python Bindings (Linux users only): For Ubuntu/Debian users, python bindings are installed using sudo apt install python3-uhd. For RHEL/Fedora users, these need to be manually generated by building from source.

Once all the dependencies are installed, installing BioView is as simple as running pip install bioview. We recommend running this command in a virtual environment so as to not pollute your operating system Python.

Usage

In order to run an experiment using bioview, you need to create an executable file similar to the example below -

import sys 
import faulthandler

from bioview.app import Viewer
from bioview.types import UsrpConfiguration, ExperimentConfiguration

from PyQt6.QtWidgets import QApplication

# Usually a good idea to have a crash log 
faulthandler.enable(open('crash.log', 'w'), all_threads=True)

# Experiment variables 
exp_config = ExperimentConfiguration(
    save_dir = '/home',
    file_name = 'example', 
    save_ds = 100,    
    disp_ds = 10, 
    disp_filter_spec = {
        'bounds': 10,
        'btype': 'low',
        'ftype': 'butter' 
    },
    disp_channels = ['Tx1Rx1', 'Tx2Rx2', 'Tx1Rx2', 'Tx2Rx1'],
)

# USRP variables 
usrp = UsrpConfiguration(
    device_name = 'MyB210_4', 
    if_freq = [100e3, 110e3],
    if_bandwidth = 5e3, 
    rx_gain = [25, 35], 
    tx_gain = [43, 37], 
    samp_rate = 1e6, 
    carrier_freq = 9e8,
)

# Biopac Control
bio = BiopacConfiguration(
    device_name = 'MyBIOPAC', 
    channels = [1, 1, 0, 0]
)

# Run application
app = QApplication(sys.argv)

window = Viewer(exp_config=exp_config,
                usrp_config=[usrp], 
                bio_config=bio)
window.show()

sys.exit(app.exec())

Performance Considerations

  • Real-time data acquisition requires sufficient system resources
  • Large data streams may require SSD storage for optimal performance
  • Memory usage scales with buffer sizes and visualization complexity. Visualization is kept efficient by only updating data streams for source that are actually visible
  • Spikes may occur in the data if receive buffer is kept low in size due to filtering edge effects
  • B210 devices work poorly with default frame sizes, which is why default receive frame size has been kept at 1024

Troubleshooting

Common issues and solutions:

  1. USRP Device Not Detected: Verify hardware connections and driver installation
  2. High CPU Usage: Adjust buffer sizes and visualization update rates
  3. Data Loss: Check storage write speeds and available disk space
  4. Synchronization Issues: Verify system clock accuracy and BIOPAC timing

Check crash.log for detailed error information and diagnostic data.

Development

Structure

bioview/
├── app.py              # Main application
├── usrp/               # USRP core functionality
├── common/             # Common functionality
├── components/         # GUI components
├── biopac/             # BIOPAC integration
├── utils/              # Utility functions
├── types/              # Custom data-types 
└── constants/          # App-specific constants

Instructions

Contributing changes requires you to have git installed in your system to be able to install the editable version of the app. In a terminal window, follow the steps listed below. On Windows, use Git Bash for this. On Linux and macOS, use the native terminal app.

# Clone repository 
cd ~ 
git clone https://github.com/meowkash/bioview.git 

# Run installer script
cd bioview
chmod +x install.sh
./install.sh 

Ensure you make your changes in forks and submit PRs for review.

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for the complete license text.

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

bioview-0.9.1.tar.gz (86.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bioview-0.9.1-py3-none-any.whl (101.1 kB view details)

Uploaded Python 3

File details

Details for the file bioview-0.9.1.tar.gz.

File metadata

  • Download URL: bioview-0.9.1.tar.gz
  • Upload date:
  • Size: 86.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.11.0-26-generic

File hashes

Hashes for bioview-0.9.1.tar.gz
Algorithm Hash digest
SHA256 d1cf48892e38c5c8ae05d7c67b7e388e89c9ebcbc8384ee22d48275df9baceca
MD5 96759d7fcfd124d2df9b16f48c30c6c8
BLAKE2b-256 11624561723ec82fc81d0405616bb7ff2de7751869f7994984da0d50670b948a

See more details on using hashes here.

File details

Details for the file bioview-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: bioview-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 101.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/6.11.0-26-generic

File hashes

Hashes for bioview-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0b179def1e1c7e430022d76f03b3fe5ede1f60c7c6e0dccd5647e9b3f99412fb
MD5 2221d42547d274a5d753639fd18d51c4
BLAKE2b-256 47355b3d957b4dd2af333c6544aec03951d81ed089a0ded5a9939c432bfe018d

See more details on using hashes here.

Supported by

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