Skip to main content

A real-time biosignal visualization tool for Lab Streaming Layer (LSL) streams.

Project description

DOI

MoBI-View

A real-time biosignal visualization tool for Lab Streaming Layer (LSL) streams.

Build codecov Ruff stability-stable LGPL--2.1 License pages

Welcome to MoBI-View, a Python application designed for real-time visualization of biosignal data from Lab Streaming Layer (LSL) streams. This tool allows researchers and clinicians to monitor and analyze various biosignals like EEG, eye-tracking data, and other physiological measurements through an intuitive and responsive interface.

Features

  • Real-time signal visualization from any LSL-compatible device streaming numerical data.
  • Multi-stream support for simultaneous monitoring of different data sources.
  • Specialized plot types optimized for different signal types.
  • EEG plot widgets for neurophysiological data.
  • Numeric plot widgets for other sensor data.
  • Channel / Stream visibility control for focusing on specific data channels.
  • Hierarchical stream organization through a tree-based interface.
  • Automatic stream discovery.

Installation

Installing uv

First, install uv, a fast package installer and resolver for Python:

macOS/Linux:

curl --proto '=https' --tlsv1.2 -sSf https://astral.sh/uv/install.sh | sh

Windows (Powershell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

⚠️ Import Note for MoBI-View Installation

MoBI-View depends on pylsl, which utilizes liblsl, a system-level dependency that is not installed by default. Install it by following the instructions from the Installing liblsl section below.

Installing MoBI-View

Option 1: Install from PyPI

pip install mobi-view

Option 2: Install from Github

# Clone the repository
git clone https://github.com/childmindresearch/MoBI-View.git
cd MoBI-View

# Optional: Create virtual environment
uv venv

# Optional: Activate the environment
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install all dependencies including the package itself
uv sync

⚠️ Installing liblsl

The pylsl package requires the liblsl binaries for your platform. You can install them using one of the following methods:

Option 1: Package Managers
  • Conda (all platforms): conda install -c conda-forge liblsl
  • vcpkg (Windows/Linux): vcpkg install liblsl
  • Conan (Windows): conan install liblsl
  • Homebrew (macOS): brew install labstreaminglayer/tap/lsl
Option 2: Build from Source
git clone --depth=1 https://github.com/sccn/liblsl.git
cd liblsl
mkdir build && cd build
cmake ..
cmake --build . --config Release
cmake --install .
Option 3: Precompiled Binaries
  • Download the latest release for your platform from the liblsl Releases page
  • Extract the zip file and add the library to your system's path:

Windows:

  1. Download the Windows ZIP file (e.g., liblsl-1.16.2-Win64.zip)
  2. Extract the Zip file, which contains: - bin/lsl.dll - lib/lsl.dll - header files in include/ directory
  3. Add the extracted bin directory to your PATH environment variable
# Example: If unzipped to C:\liblsl
$env:PATH += ";C:\liblsl\bin"

macOS:

  1. Download the macOS package (e.g., liblsl-1.16.2-OSX-amd64.tar.bz2)
  2. Extract the archive:
tar -xf liblsl-1.16.2-OSX-amd64.tar.bz2
  1. Inside you'll find: - lib/liblsl.dylib - header files in include/ directory
  2. You can either: - Copy lib/liblsl.dylib to lib - Or set the DYLD_LIBRARY_PATH to include the lib directory

Linux:

  1. Download the appropriate Debian package (e.g., liblsl-1.16.2-Linux64-focal.deb for Ubuntu 20.04)
  2. Install using:
sudo dpkg -i liblsl-1.16.2-Linux64-focal.deb

Or download the liblsl-1.16.2-Linux64.tar.bz2 and extract:

tar -xf liblsl-1.16.2-Linux64.tar.bz2
sudo cp lib/liblsl.so* /usr/local/lib/
sudo ldconfig

Quick start Guide

  1. Activate your environment (if not already activated):

  2. Run MoBI-View (either method works):

# Method 1: Using uv run
uv run mobi-view

# Method 2: Direct execution
python -m src/main.py
  1. Select LSL streams from the tree view to visualize data:
    • EEG data appears in the EEG tab.
    • Other physiological signals appear in the Numeric tab.
    • Toggle streams and channels on/off by clicking checkboxes.

Application Interface

When you launch MoBI-View:

  1. Stream Discovery: The application automatically discovers available LSL streams.
  2. Visualization: Streams are displayed in appropriate plot widgets based on their type (EEG vs non-EEG).
  3. Control Panel: A tree view on the left shows available streams and channels. This control panel can be moved or separated out of the main window.
  4. Channel Selection: Toggle visibility of individual channels by clicking on their boxes in the Control Panel.

Future Directions

  • Support for additional visualization types (non-numeric data and event markers).
  • Custom filtering and signal processing options.
  • Extended analysis tools for common biosignal metrics.
  • EEG impedance checker for ease of setup.

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

mobi_view-0.2.0.tar.gz (71.4 kB view details)

Uploaded Source

Built Distribution

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

mobi_view-0.2.0-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file mobi_view-0.2.0.tar.gz.

File metadata

  • Download URL: mobi_view-0.2.0.tar.gz
  • Upload date:
  • Size: 71.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.15

File hashes

Hashes for mobi_view-0.2.0.tar.gz
Algorithm Hash digest
SHA256 550840333dccacc084785edd297dba51a50ab09e795f44606a3821d8be61cb63
MD5 ec29190d3c541c04912ff4f116688ad0
BLAKE2b-256 55ed702d8dc56c3be0c4430f6376d3657139ba84b275d3a885cceb9ba26dc2fe

See more details on using hashes here.

File details

Details for the file mobi_view-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mobi_view-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.15

File hashes

Hashes for mobi_view-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 649895a8d765d3fea4620c59ca9532df2768a35230b4bea6d84b57ea686a2a30
MD5 878f0208897b7c09beebfb1cfec1502f
BLAKE2b-256 0b2809e14f9552dacb7ebce8268be6036d8ac65368530efc312925b35d53fe13

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