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.

quickstart

  • 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plasma_app-2.1.3.tar.gz (467.0 kB view details)

Uploaded Source

Built Distribution

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

plasma_app-2.1.3-py3-none-any.whl (487.0 kB view details)

Uploaded Python 3

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

Hashes for plasma_app-2.1.3.tar.gz
Algorithm Hash digest
SHA256 ef3d494df06d10c7f979977f27791e7b578e5dfd3286db14e5e5be346cbee437
MD5 09aee1adf73fdcaa94a2cc1ad48a9399
BLAKE2b-256 2a9cc3f9a7c4658f654ac7edcc211ef8074af623a02a7479821cce8ab81adf8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for plasma_app-2.1.3.tar.gz:

Publisher: publish.yml on YuyiChang/PLASMA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for plasma_app-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8e21f24012be1566942ac8fc960f1ccfc4e265e59b4c8f9be116385053cdfe00
MD5 b91d8828ad2cdb13c106a2e4a41ec6f2
BLAKE2b-256 1372d30d4affc9015afe295db6f73be2050abfe30709c210c7f360afe0ca8b7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for plasma_app-2.1.3-py3-none-any.whl:

Publisher: publish.yml on YuyiChang/PLASMA

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.1.3 This release

2 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