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.
quickstart
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plasma_app-2.1.3.tar.gz.
File metadata
- Download URL: plasma_app-2.1.3.tar.gz
- Upload date:
- Size: 467.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef3d494df06d10c7f979977f27791e7b578e5dfd3286db14e5e5be346cbee437
|
|
| MD5 |
09aee1adf73fdcaa94a2cc1ad48a9399
|
|
| BLAKE2b-256 |
2a9cc3f9a7c4658f654ac7edcc211ef8074af623a02a7479821cce8ab81adf8d
|
Provenance
The following attestation bundles were made for plasma_app-2.1.3.tar.gz:
Publisher:
publish.yml on YuyiChang/PLASMA
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plasma_app-2.1.3.tar.gz -
Subject digest:
ef3d494df06d10c7f979977f27791e7b578e5dfd3286db14e5e5be346cbee437 - Sigstore transparency entry: 2800165974
- Sigstore integration time:
-
Permalink:
YuyiChang/PLASMA@b9326401233f039bfa49d37e915bfb0a444cdf54 -
Branch / Tag:
refs/tags/v2.1.3 - Owner: https://github.com/YuyiChang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b9326401233f039bfa49d37e915bfb0a444cdf54 -
Trigger Event:
push
-
Statement type:
File details
Details for the file plasma_app-2.1.3-py3-none-any.whl.
File metadata
- Download URL: plasma_app-2.1.3-py3-none-any.whl
- Upload date:
- Size: 487.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e21f24012be1566942ac8fc960f1ccfc4e265e59b4c8f9be116385053cdfe00
|
|
| MD5 |
b91d8828ad2cdb13c106a2e4a41ec6f2
|
|
| BLAKE2b-256 |
1372d30d4affc9015afe295db6f73be2050abfe30709c210c7f360afe0ca8b7c
|
Provenance
The following attestation bundles were made for plasma_app-2.1.3-py3-none-any.whl:
Publisher:
publish.yml on YuyiChang/PLASMA
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
plasma_app-2.1.3-py3-none-any.whl -
Subject digest:
8e21f24012be1566942ac8fc960f1ccfc4e265e59b4c8f9be116385053cdfe00 - Sigstore transparency entry: 2800166032
- Sigstore integration time:
-
Permalink:
YuyiChang/PLASMA@b9326401233f039bfa49d37e915bfb0a444cdf54 -
Branch / Tag:
refs/tags/v2.1.3 - Owner: https://github.com/YuyiChang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b9326401233f039bfa49d37e915bfb0a444cdf54 -
Trigger Event:
push
-
Statement type: