Skip to main content

PLASMA

PLASMA: Platform for LSL-based Acquisition of Sensor Metrics and Analytics

📖 Operator handbook: https://yuyichang.github.io/PLASMA/ — install, configure, pair MSense wristbands, run a session, read the memo panel, recover from faults.

PyPI version Python License GitHub Release

Download

Platform Architecture Download
macOS Apple Silicon (arm64) Download .dmg
Windows x64 Download Installer .exe
Linux x64 Download .tar.gz
Linux ARM64 Download .tar.gz

For other packages and previous versions, see GitHub Releases.

quickstart

macOS: brew install --cask yuyichang/plasma/plasma is the recommended way to get PLASMA — no Python, no liblsl, no Gatekeeper dance. Windows: scoop bucket add plasma https://github.com/YuyiChang/scoop-plasma then scoop install plasma does the same, without the SmartScreen warning. See Install & first launch for that and every other install path (prebuilt binaries, PyPI, from source).

To run from source instead:

  • conda create -n plasma python=3.12
  • conda activate plasma
  • pip install -e ".[all]" — or a lean subset, e.g. ".[msense]" / ".[qb2,pupil]"
  • python -m plasma (or the plasma console script)

pip install -r requirements.txt still works — it's a shim for -e .[all,build,test].

Want a double-clickable icon instead of running plasma from a terminal? pip install -e ".[desktop]" then plasma-install-shortcut — see Install & first launch.

Writable state (device config, gyro-bias calibration, data/ recordings, session log) location, in order: $PLASMA_HOME if set → a per-user app-data dir when running as a packaged app (~/Library/Application Support/PLASMA on macOS, %LOCALAPPDATA%\PLASMA on Windows, ~/.local/share/plasma on Linux) → the working directory when running from source. Resolved once at import — set PLASMA_HOME before launching to override.

use PLASMA from another project

pip install "plasma-app[msense] @ git+https://github.com/YuyiChang/PLASMA@v2.0.0"

The distribution is plasma-app; the import package is plasma. Extras map to plugins: msense, qb2, pupil, shimmer, obs (and all).

Known issue / future works

  • need manually set lidar ip addr
  • the built-in LSL→XDF recorder captures every stream on the default liblsl session, so a concurrent pytest run or another lab tool leaks into the recording; re-Initialize doesn't fully tear down old outlets. Direction (SessionID scoping, outlet lifecycle): docs/reference/lsl-lifecycle-and-scoping.md
  • interactive=false on ses/sub when collection started
  • linux aarch64 build — PLASMA_Linux_arm64 for Jetson Orin (JetPack 6); CI job build-linux-arm64
  • infrequent stream (e.g., PLASMA journaler) shows green after recording stop
  • doc for msense workflow with better screenshots
  • memo stage transition logic optimization (e.g., timing of "ready to start" msg wrt sensor init status)

developing a sensor plugin

Every sensor is a plugin: a PlasmaDevice subclass plus a registration entry in plasma/plugins.py. Core code never imports a concrete device.

full guide: plasma/devices/README.md base class: PlasmaDevice in plasma/devices/template.py reference package (config section + tabs + multi-unit): plasma/devices/msense/

documentation

The playbook is a MkDocs Material site under docs/, deployed to GitHub Pages by .github/workflows/docs.yml on every push to main.

pip install -e ".[docs]"        # mkdocs-material + mkdocs-glightbox + playwright
mkdocs serve                     # preview at http://127.0.0.1:8000

Screenshots (docs/assets/screenshots/*.png, Git LFS) are regenerated by a Playwright script that drives PLASMA with the simulated MSense device:

brew install git-lfs && git lfs install     # one-time
python scripts/capture_screenshots.py        # ~4 min; needs Google Chrome

It uses PLASMA_HOME=~/Library/Application Support/PLASMA by default so the paths shown in the memo panel match a packaged install; pass --home /tmp/x for a disposable run.

references

Metadata

Release files for plasma-app 2.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plasma-app 2.3.0
File Size Uploaded
plasma_app-2.3.0.tar.gz 478.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for plasma-app 2.3.0
File Interpreter ABI Platform
plasma_app-2.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 978.2 kB

Release files / plasma_app-2.3.0.tar.gz

Download URL plasma_app-2.3.0.tar.gz
Size 478.2 kB
Tags Source
SHA-256 checksum
How to use checksums
cee5355fa5a533734bd61c41029ec03518aedae03e3a972c795501a18d887328
BLAKE2b-256 checksum
How to use checksums
e788ee034e7d96c170b821394c3c018e699110c12f44d3776e296acd7c333749
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / plasma_app-2.3.0-py3-none-any.whl

Download URL plasma_app-2.3.0-py3-none-any.whl
Size 500.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5752a7007fa9f4c0376bb5ad1554bd367c462dc29fdd8f72ad4acd40729189e
BLAKE2b-256 checksum
How to use checksums
02e2e5aaaacafa4a4c0f3846ebe656fb9d5785adbb9cc780f9e2529dfdc1ea1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.3.0 This release

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.0

2 release files

2.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page