Skip to main content

Nimbus Personalizer: Bayesian personalization head for frozen neural EEG embeddings — wrap any encode(X)→Z trunk, adapt online, ship BrainState

Project description

nimbus-bci

Nimbus Personalizer — Bayesian personalization head for frozen neural EEG embeddings.
Plug any frozen trunk that emits encode(X) → Z, adapt online with a Nimbus head, ship apps on BrainState — without owning or retraining the encoder.

Also ships sklearn-compatible Bayesian classifiers (LDA / QDA / Softmax / STS) for classical feature pipelines (CSP, Riemann, …); those heads power Personalizer and can be used alone.

Docs · Personalizer · API reference · PyPI · License

Install

pip install nimbus-bci
# optional: pip install nimbus-bci[softmax]   # JAX Softmax head
# optional: pip install nimbus-bci[riemann]   # pyRiemann pipelines
# optional: pip install nimbus-bci[mne]       # MNE helpers

From source: pip install -e ".[all]" after cloning.

Quick start — encoder contract

Anything that maps inputs to embeddings (n, d) plugs in. Nimbus does not own DL architectures.

from nimbus_bci import Personalizer, wrap

enc = wrap(model.encode, model_id="partner-encoder", embedding_dim=64)
adapter = Personalizer(
    encoder=enc,
    head="lda",
    user="subject_001",
    classes=["left", "right"],
    preset="research",
)
adapter.fit(X_cal, y_cal)
states = adapter.predict(X_test)  # list[BrainState]

adapter.save("subject_001_profile")
loaded = Personalizer.load("subject_001_profile", encoder=enc)  # re-attach trunk

Optional shortcuts for common external trunks: wrap_eegnet, wrap_braindecode (see encoder contract).

Examples in this repo: examples/middleware_personalizer.py, middleware_braindecode.py, middleware_reve.py, middleware_recommend_adapt.py.
Bench EEGNet demo (needs nimbusbench[dl]): nimbusbench/scripts/middleware_eegnet.py.

When to adapt (thin helper)

Optional mean-shift check before spending labels on partial_fit. You choose the threshold tau.

dec = adapter.recommend_adapt(X_stream, tau=your_tau)  # stay vs stream update
if dec.should_adapt:
    adapter.partial_fit(X_lab, y_lab)

Trial rejection (BrainState.rejected / need_more_data) is a different gate — accept/reject the intent for the app.
Details: BrainState · recipe: examples/middleware_recommend_adapt.py.

Classical heads (CSP / features)

Same Bayesian heads without an encoder — inputs are already features:

from nimbus_bci import NimbusLDA

clf = NimbusLDA()
clf.fit(X_train, y_train)
proba = clf.predict_proba(X_test)
clf.partial_fit(X_new, y_new)

Also: streaming (StreamingSession), active learning (CalibrationSession), MNE helpers, optional Riemann pipelines. See docs.nimbusbci.com and examples/e2e_mne_csp_nimbus.py.

Head Role
NimbusLDA / NimbusQDA Conjugate Bayesian LDA/QDA
NimbusSoftmax Polya–Gamma VI (optional JAX)
NimbusSTS Latent-state / drift (experimental)

Evidence

Public Personalizer story (heads, cost vs fine-tune, multi-trunk / REVE):
Evidence · Overview.

License

Two-track proprietary license — see LICENSE.txt. Non-commercial use is free under the Non-Commercial terms; commercial use requires a paid license.

Project details


Download files

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

Source Distribution

nimbus_bci-0.5.0.tar.gz (157.8 kB view details)

Uploaded Source

Built Distributions

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

nimbus_bci-0.5.0-cp313-cp313-win_amd64.whl (513.4 kB view details)

Uploaded CPython 3.13Windows x86-64

nimbus_bci-0.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nimbus_bci-0.5.0-cp313-cp313-macosx_11_0_arm64.whl (563.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

nimbus_bci-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl (577.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

nimbus_bci-0.5.0-cp312-cp312-win_amd64.whl (517.3 kB view details)

Uploaded CPython 3.12Windows x86-64

nimbus_bci-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nimbus_bci-0.5.0-cp312-cp312-macosx_11_0_arm64.whl (567.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

nimbus_bci-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl (580.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

nimbus_bci-0.5.0-cp311-cp311-win_amd64.whl (536.1 kB view details)

Uploaded CPython 3.11Windows x86-64

nimbus_bci-0.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

nimbus_bci-0.5.0-cp311-cp311-macosx_11_0_arm64.whl (577.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

nimbus_bci-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl (611.8 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file nimbus_bci-0.5.0.tar.gz.

File metadata

  • Download URL: nimbus_bci-0.5.0.tar.gz
  • Upload date:
  • Size: 157.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nimbus_bci-0.5.0.tar.gz
Algorithm Hash digest
SHA256 12cf054c136571c653d77f1bc3dc907a13c7b26094c206019b88a3818d726037
MD5 385173b2a2df1f42fb3bdeed8643a6a0
BLAKE2b-256 5ead883e04cb876b0e7f6851b1240a9c9384b3ffed84801341adf28addf7bec0

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: nimbus_bci-0.5.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 513.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nimbus_bci-0.5.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 73f9b68c807d34467f4241af6294c6f4f616acce1a8c182fee98f6adb1b2f003
MD5 a4bd5c9e81e7b287f57d0bfdd670ea87
BLAKE2b-256 b257f4973829b9cae071b318d98fbd82dec313882d5c47768b8a87c9165f1b57

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e76a1837cd331387e2509b298311bfa9406e0a04793a19ddc5263edfe152a2d3
MD5 2dde8f491b784279c4fbd919c17d13d4
BLAKE2b-256 d9e32010dc376cb88a3a1d24ee850911fbd2e4dd81517bcb59b7b7cef6422bab

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6cabe2ad373c2cadcbf3d03b0e81dbd20c9bd20f932a40dace77f2510c23ffaf
MD5 70d7972ae6ddcd336cb1f2865a155be5
BLAKE2b-256 d36b53f23857c6d418146fc1d8fbfb276ad9fe17c667ce092bda695ac3c86271

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 dd443b31bc05a3571f048827b1c8af8db60981aed55722092a329e401c51982d
MD5 51107bb7f63a13f3c8d733335f9fd879
BLAKE2b-256 3aa7cf26997b8e652ffbc947b22808e112b49286389c1d4e7912483660b66301

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: nimbus_bci-0.5.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 517.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nimbus_bci-0.5.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9ee7c87a9d283fd00dad1c0823db8505df2cabdf488847378e60cad091b4795d
MD5 933943bc96ac828371e341c8067fdc90
BLAKE2b-256 3672c55060b75d285fa6b49b8f6c1adc3668e92c00cc41151e47dd89730e5b6c

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1f19dd0a125ad752a80c97199c034a845c5c9674e22cadf6c4c4a181eb3677bd
MD5 30d7929b37475960edddbf889c4539ec
BLAKE2b-256 5b2fd4304d94645cc0b43ca40e2dd32afff70a7c405123d9d769d20fdebad3a7

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b124564574d80010fdd5024f1a04a4d221f201089b0ecdfcabe24982b64fadf
MD5 38d94e3ae4e0d08f19502206aca518bd
BLAKE2b-256 1d2ae8977f7aa24a268b7217a6758aa0c81b445ee07906f6600343b9db8f647f

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 dd15af53d27aeda271b69507079443299a79d4d6d3681e7e034b2af4e7e9ca9f
MD5 aa437e716063348b75a5a829a45c7bd2
BLAKE2b-256 a8b5d979ca05c8aa96c4edd0ca00a85c702bbe4ff2f990520bd29f5f2acf8f27

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: nimbus_bci-0.5.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 536.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nimbus_bci-0.5.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 713a7652978d892e705030a5624c3434d85ba22401d5309a1fec3dd18e56674c
MD5 f331cadd1838f9eac7d431bd47c5b303
BLAKE2b-256 ad2b6be9ce26410910c7d23d2dd805d3abecedd45ff67152efb9994fcc6af9b5

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d468581d2845c5f4ac59dadd260a06d6667df8f4b5797fa2a01c85e5d3cb8c9
MD5 529b702bbe91e0d60327bae236b9a203
BLAKE2b-256 30aaa100330f8a7963bf786ff7c48e3372dcfc56bd5eb53d086d2a766ed85cdb

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 678af7e83ebdaa061f77dba6a020fefec2753a02e2ccaa83fb7be4715558ef64
MD5 b10bc08a340be36b16070ce5371fa8eb
BLAKE2b-256 182ac837542db4da3783b953be3c19d1cd8d7e2074c17532265b3badf76f0d05

See more details on using hashes here.

File details

Details for the file nimbus_bci-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for nimbus_bci-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c52dad69538b9e7a49dbcb079c8737deed0870ee8dd161d5df354c9f90c85a9c
MD5 9920ce33c3c786875fb5cc655433ba39
BLAKE2b-256 45b3d13d05c63f957ec07f45753db2d9bf530692989fd7a59803b9b5bccab28c

See more details on using hashes here.

Supported by

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