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.
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.12conda activate plasmapip install -e ".[all]"— or a lean subset, e.g.".[msense]"/".[qb2,pupil]"python -m plasma(or theplasmaconsole 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
pytestrun 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_arm64for Jetson Orin (JetPack 6); CI jobbuild-linux-arm64 - infrequent stream (e.g., PLASMA journaler) shows green after recording stop
- doc for msense workflow with better screenshots
- memo
stagetransition 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.mdbase class:PlasmaDeviceinplasma/devices/template.pyreference 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.2.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plasma_app-2.2.4.tar.gz | 473.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plasma_app-2.2.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 967.7 kB
Release files / plasma_app-2.2.4.tar.gz
| Download URL | plasma_app-2.2.4.tar.gz |
|---|---|
| Size | 473.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f5fc689b1713c2dea0563fe87b817c01c62826860affbb2089f29f41bed8ce1
|
|
BLAKE2b-256 checksum How to use checksums |
1cda11adf38fd9e48d24245f6c03ceaf8cbd643021eca6f658ad844435316765
|
| 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 Sep 29, 2026.
Transparency logRelease files / plasma_app-2.2.4-py3-none-any.whl
| Download URL | plasma_app-2.2.4-py3-none-any.whl |
|---|---|
| Size | 494.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78c3a169497f29fbd633de76af5ee6d9ff758eb30de6124736c625779be9cd45
|
|
BLAKE2b-256 checksum How to use checksums |
c412cba9d9170e854483828f31fb5a29b6dab8b2e74b0977be7bfcbe3ecdeaf5
|
| 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 Sep 29, 2026.
Transparency log