Skip to main content

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.

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.1.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.1-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mobi_view-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 8bc5f9a7951af64fd0bc7cdbf0102d097e94a35f11f856155a57fe02bbca688e
MD5 291608c9946a2a9dc45fc895f8c18ee4
BLAKE2b-256 7bc70824d3b1ae7d7122d7a3cf98a20d447a4e7a23c2323da354aa1af1d7b7c6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for mobi_view-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 331e85329cb6c1d2e0cbed040302ef790a7c1d9a14e2415016c8227e2e03462b
MD5 3e697b0cf0aea6bd989a05b2f19a0acb
BLAKE2b-256 c4776fe7644eb69ca1889d9ea7d9011465079eab30fa9e1eee04ffb97bac4a11

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

Supported by

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