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
Built Distributions
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12cf054c136571c653d77f1bc3dc907a13c7b26094c206019b88a3818d726037
|
|
| MD5 |
385173b2a2df1f42fb3bdeed8643a6a0
|
|
| BLAKE2b-256 |
5ead883e04cb876b0e7f6851b1240a9c9384b3ffed84801341adf28addf7bec0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73f9b68c807d34467f4241af6294c6f4f616acce1a8c182fee98f6adb1b2f003
|
|
| MD5 |
a4bd5c9e81e7b287f57d0bfdd670ea87
|
|
| BLAKE2b-256 |
b257f4973829b9cae071b318d98fbd82dec313882d5c47768b8a87c9165f1b57
|
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
- Download URL: nimbus_bci-0.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e76a1837cd331387e2509b298311bfa9406e0a04793a19ddc5263edfe152a2d3
|
|
| MD5 |
2dde8f491b784279c4fbd919c17d13d4
|
|
| BLAKE2b-256 |
d9e32010dc376cb88a3a1d24ee850911fbd2e4dd81517bcb59b7b7cef6422bab
|
File details
Details for the file nimbus_bci-0.5.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 563.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cabe2ad373c2cadcbf3d03b0e81dbd20c9bd20f932a40dace77f2510c23ffaf
|
|
| MD5 |
70d7972ae6ddcd336cb1f2865a155be5
|
|
| BLAKE2b-256 |
d36b53f23857c6d418146fc1d8fbfb276ad9fe17c667ce092bda695ac3c86271
|
File details
Details for the file nimbus_bci-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 577.0 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd443b31bc05a3571f048827b1c8af8db60981aed55722092a329e401c51982d
|
|
| MD5 |
51107bb7f63a13f3c8d733335f9fd879
|
|
| BLAKE2b-256 |
3aa7cf26997b8e652ffbc947b22808e112b49286389c1d4e7912483660b66301
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ee7c87a9d283fd00dad1c0823db8505df2cabdf488847378e60cad091b4795d
|
|
| MD5 |
933943bc96ac828371e341c8067fdc90
|
|
| BLAKE2b-256 |
3672c55060b75d285fa6b49b8f6c1adc3668e92c00cc41151e47dd89730e5b6c
|
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
- Download URL: nimbus_bci-0.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.3 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f19dd0a125ad752a80c97199c034a845c5c9674e22cadf6c4c4a181eb3677bd
|
|
| MD5 |
30d7929b37475960edddbf889c4539ec
|
|
| BLAKE2b-256 |
5b2fd4304d94645cc0b43ca40e2dd32afff70a7c405123d9d769d20fdebad3a7
|
File details
Details for the file nimbus_bci-0.5.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 567.4 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b124564574d80010fdd5024f1a04a4d221f201089b0ecdfcabe24982b64fadf
|
|
| MD5 |
38d94e3ae4e0d08f19502206aca518bd
|
|
| BLAKE2b-256 |
1d2ae8977f7aa24a268b7217a6758aa0c81b445ee07906f6600343b9db8f647f
|
File details
Details for the file nimbus_bci-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 580.2 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd15af53d27aeda271b69507079443299a79d4d6d3681e7e034b2af4e7e9ca9f
|
|
| MD5 |
aa437e716063348b75a5a829a45c7bd2
|
|
| BLAKE2b-256 |
a8b5d979ca05c8aa96c4edd0ca00a85c702bbe4ff2f990520bd29f5f2acf8f27
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
713a7652978d892e705030a5624c3434d85ba22401d5309a1fec3dd18e56674c
|
|
| MD5 |
f331cadd1838f9eac7d431bd47c5b303
|
|
| BLAKE2b-256 |
ad2b6be9ce26410910c7d23d2dd805d3abecedd45ff67152efb9994fcc6af9b5
|
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
- Download URL: nimbus_bci-0.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.2 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d468581d2845c5f4ac59dadd260a06d6667df8f4b5797fa2a01c85e5d3cb8c9
|
|
| MD5 |
529b702bbe91e0d60327bae236b9a203
|
|
| BLAKE2b-256 |
30aaa100330f8a7963bf786ff7c48e3372dcfc56bd5eb53d086d2a766ed85cdb
|
File details
Details for the file nimbus_bci-0.5.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 577.9 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
678af7e83ebdaa061f77dba6a020fefec2753a02e2ccaa83fb7be4715558ef64
|
|
| MD5 |
b10bc08a340be36b16070ce5371fa8eb
|
|
| BLAKE2b-256 |
182ac837542db4da3783b953be3c19d1cd8d7e2074c17532265b3badf76f0d05
|
File details
Details for the file nimbus_bci-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: nimbus_bci-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 611.8 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c52dad69538b9e7a49dbcb079c8737deed0870ee8dd161d5df354c9f90c85a9c
|
|
| MD5 |
9920ce33c3c786875fb5cc655433ba39
|
|
| BLAKE2b-256 |
45b3d13d05c63f957ec07f45753db2d9bf530692989fd7a59803b9b5bccab28c
|