Recent Releases of MNE-LSL
MNE-LSL - 1.10.0
What's Changed
- Minor documentation fixes by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/415
- Build and test aarch64 natively by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/416
- Add support for callback(s) by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/419
- Update stub files by @github-actions[bot] in https://github.com/mne-tools/mne-lsl/pull/423
- Add support for stream hashing and usage as dictionary keys by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/424
- Update documentation of the pylsl differences by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/427
- ADD keyword, FIX install command by @teonbrooks in https://github.com/mne-tools/mne-lsl/pull/433
- Pin liblsl build to VS2019 toolset and update Windows install instructions by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/440
- Fix bug where epoch with too small buffer could fail due to the event shape by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/447
- Add support for
event_idin irregularly sampled event stream by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/455
New Contributors
- @teonbrooks made their first contribution in https://github.com/mne-tools/mne-lsl/pull/433
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.9.0...1.10
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne 7 months ago
MNE-LSL - 1.9.0
What's Changed
- Add autofix.ci to run stub file generation on pull request by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/376
- Fix intersphinx link in tutorial by @tsbinns in https://github.com/mne-tools/mne-lsl/pull/388 and https://github.com/mne-tools/mne-lsl/pull/389
- Fix documentation of player LSL first argument by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/391
- Fix source code links in documentation by @myd7349 in https://github.com/mne-tools/mne-lsl/pull/398
- Fix for annotation with no duration by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/399
New Contributors
- @tsbinns made their first contribution in https://github.com/mne-tools/mne-lsl/pull/388
- @myd7349 made their first contribution in https://github.com/mne-tools/mne-lsl/pull/398
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.8.0...1.9.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne 12 months ago
MNE-LSL - 1.8.0
What's Changed
- Improve test stability by explicitly disconnecting stream_events by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/370
- Don't use public
get_datamethod in epoch acquisition to avoid resetting the number of new samples by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/371 - Deprecate acquisition_delay=0 in favor of None by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/372
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.7.0...1.8.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne about 1 year ago
MNE-LSL - 1.7.0
What's Changed
- Bundle
liblsltogether withmne-lslin wheels by @larsoner and @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/351 - Drop support for python 3.9 by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/343
MNE-LSL now includes ABI3 compatible wheels with liblsl for the tags:
- macOS 11+: macosx_11_0_x86_64 -- macosx_11_0_arm64
- Linux: manylinux_2_17_x86_64 -- manylinux2014_x86_64 -- manylinux_2_17_aarch64 -- manylinux2014_aarch64
- Windows: win_amd64
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.6.0...1.7.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 1 year ago
MNE-LSL - 1.6.1
- Safer parsing of channel names in the legacy stream viewer, ensuring that incomplete metadata in the
StreamInfoshould be correctly parsed in the correct number of channels.
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.6.0...1.6.1
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 1 year ago
MNE-LSL - 1.6.0
What's Changed
- Improve coverage and improve disconnection of epochs by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/317
- Fix sample and testing datasets path by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/319
- Drop isort and pydocstyle in favor of ruff and pin to 0.6.0 and above by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/321
- Get rid of qt5 entirely in optional requirements by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/326
- add mailmap and enforce sorting of it by @drammock in https://github.com/mne-tools/mne-lsl/pull/327
- Draft JOSS paper and add PDF generation gh-action by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/316
- Fix negative start index when looping around dataset by @toni-neurosc in https://github.com/mne-tools/mne-lsl/pull/330
- Add contributing guide by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/332
New Contributors
- @drammock made their first contribution in https://github.com/mne-tools/mne-lsl/pull/327
- @toni-neurosc made their first contribution in https://github.com/mne-tools/mne-lsl/pull/330
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.5.0...1.6.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 1 year ago
MNE-LSL - 1.5.0
What's Changed
- Use property nnewsamples in detector examlpe by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/288
- Add EpochsStream for epoching real-time stream on-the-fly by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/258
- Add tutorial about epochs and expose base stream class by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/302
- CI: Fix retry action by @larsoner in https://github.com/mne-tools/mne-lsl/pull/306
- Make unit tests more robust and add tutorial for Player with annotations by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/305
- Improve peak detection example using chunk size 1 by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/308
- Add documentation about processing steps by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/309
- Add real-time decoding example by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/312
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.4.0...1.5.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 1 year ago
MNE-LSL - 1.4.0
What's Changed
- Improve warning handling by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/243
- Fix CLI entry-point for Player by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/246
- Fix push operation with a player having chunk_size set to 1 by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/257
- Add example for a real-time peak detector applied to cardiac R-peak by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/256
- Replace single-use thread operation with a ThreadPoolExecutor by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/264
- Add example of player run in child process by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/267
- Fix pushing the last chunk of a finite mock stream with chunk size of 1 by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/268
- Fix flaky test by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/270
- Improve CIs, example and code coverage by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/273
- Improve legacy viewer scaling by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/275
- Add example for bandpower on rolling window by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/279
- Try to fix segfault in CIs during inlet/outlet deletion/destruction by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/277
- Add manual acquisition method by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/282
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.3.1...1.4.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 1 year ago
MNE-LSL - 1.3.1
- Improve handling of warnings throughout the codebase to improve the feedback received by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/243
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.3.0...1.3.1
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne almost 2 years ago
MNE-LSL - 1.3.0
What's Changed
- Add IIR filters to a
Streamobject through the methodsStream.filterandStream.notch_filterby @mscheltienne and @larsoner in https://github.com/mne-tools/mne-lsl/pull/218 and https://github.com/mne-tools/mne-lsl/pull/226 - Improve logging and level handling by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/219
- Add 'n_repeat' argument to Player by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/223
- Improve documentation of performance differences between pylsl and mne.lsl by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/231
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.2.0...1.3.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne almost 2 years ago
MNE-LSL - 1.2.0
- Implement MNE's design philosophy by returning
selfin methods modifying aStreamLSL-> enables method chainingstream.pick("eeg").set_eeg_reference("average") - Add argument
annotationstoPlayerLSLto stream annotations on a separate irregularly sampled stream - Add support for loaded
Rawobjects as input to aPlayerLSL - Improve deletion or low-level resources
- Improve discovery and download of existing
liblslon the system - Fix reading of yRange through settings in legacy
StreamViewer
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.1.1...1.2.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne about 2 years ago
MNE-LSL - 1.1.1
- Fix parsing of incomplete
StreamInfointo anmne.Infoobject by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/179 - Remove
pytestrelated files from the distribution by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/180
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.1.0...1.1.1
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 2 years ago
MNE-LSL - 1.1.0
What's Changed
- Remove legacy setup.py by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/167
- Improve documentation workflow by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/170
- Add support for 'timestamp' array in a push operation by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/172
- Add local sphinx-remove-toctrees extension by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/173
- Improve type-hints by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/175
- MAINT: Make tests less flaky by @larsoner in https://github.com/mne-tools/mne-lsl/pull/168
- Improve test coverage on load-liblsl and on datasets by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/176
- Improve test coverage, structure and checks for strean connection in properties by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/177
- Match argument order between BasePlayer and PlayerLSL by @mscheltienne in https://github.com/mne-tools/mne-lsl/pull/178
New Contributors
- @larsoner made their first contribution in https://github.com/mne-tools/mne-lsl/pull/168
Full Changelog: https://github.com/mne-tools/mne-lsl/compare/1.0.0...1.1.0
Please report encountered issues on the tracker.
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 2 years ago
MNE-LSL - 1.0.0
Initial release of mne-lsl for Python 3.9 to 3.12. MNE-LSL integrates tightly LSL streams with MNE-Python. It replaces the LSLClient in mne_realtime with 2 main objects:
mne_lsl.stream.StreamLSL: connects to an LSL stream and acts as aRawobject which underlying data array is a ringbuffer continuously updated.mne_lsl.player.PlayerLSL: create a fake LSL stream from any MNE-readable file.
player = mne_lsl.player.PlayerLSL(...)
player.start()
stream = mne_lsl.stream.StreamLSL(...)
stream.connect()
stream.pick("eeg")
stream.set_eeg_reference("average")
data, ts = stream.get_data()
stream.disconnect()
player.stop()
Additionally, the low-level mne_lsl.lsl module re-implements a faster version of pylsl with convenience methods to set and retrieve metadata, for instance from an mne.Info object.
sinfo = mne_lsl.lsl.StreamInfo(...)
sinfo.set_channel_info(info)
info = sinfo.get_channel_info()
Please report encountered issues on the tracker.
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 2 years ago
MNE-LSL - 0.6.1
- Fix handling of processing flags in a
bsl.lsl.StreamInlet bsl.lsl.StreamInlet.pull_samplenow returns an empty list or array if no sample is available instead ofNone
Full Changelog: https://github.com/fcbg-hnp-meeg/bsl/compare/0.6.0...0.6.1
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne almost 3 years ago
MNE-LSL - 0.6.0
What's Changed
This release includes a new python LSL binding, bsl.lsl, replacing pylsl. This binding is optimized for numerical types. Pull operations on a StreamInlet now return a numpy array in constant time O(1) instead of a list (or list of list) in linear time O(n).
Example: 65 channels, 2048 samples chunks (1 seconds @ 2048 Hz or 2 seconds @ 1024 Hz), in double precision (float64)
- pylsl: 7.87 ms ± 58 µs per pullchunk
- bsl.lsl: 4.35 µs ± 134 ns per pullchunk
This is the first release using the new python binding. It also deprecates the StreamReceiver, StreamPlayer and StreamRecorder API which will be replaced in the next versions.
Full Changelog: https://github.com/fcbg-hnp-meeg/bsl/compare/0.5.0...0.6.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne almost 3 years ago
MNE-LSL - 0.5.1
- Add support for stream type
signalused by OpenViBE servers to theStreamReceiver
Full Changelog: https://github.com/bsl-tools/bsl/compare/0.5.0...0.5.1
This is the last release with the legacy API: StreamPlayer, StreamReceiver, StreamRecorder.
The next release will be backward incompatible. It will:
- replace pylsl with a new lsl module, dropping support for old versions of python and liblsl while improving greatly the performance, especially to pull chunks of data from the network
- replace the StreamPlayer with a Player API
- replace the StreamReceiver with a Stream API, with similar methods to an MNE object
- replace the StreamRecorder with a Recorder API, writing to disk as soon as the data is received
Please pin the version to bsl < 0.6.0 if you need to retain the legacy API.
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne about 3 years ago
MNE-LSL - 0.5.0
What's Changed
- Add black formatting and isort by @mscheltienne in https://github.com/bsl-tools/bsl/pull/61
- [MNT] Move package configuration and dependencies to pyproject.toml by @mscheltienne in https://github.com/bsl-tools/bsl/pull/62
- Bump liblsl, pylsl and psychopy versions in externals by @mscheltienne in https://github.com/bsl-tools/bsl/pull/63
- Add LSLTrigger for triggers on an LSL outlet by @mscheltienne in https://github.com/bsl-tools/bsl/pull/64
- Better handling of trigger metaclass by @mscheltienne in https://github.com/bsl-tools/bsl/pull/65
Full Changelog: https://github.com/bsl-tools/bsl/compare/0.4.0...0.5.0
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne over 3 years ago
MNE-LSL - 0.4.0
- Fix the recorder button on the StreamViewer.
- Improves the documentation, the crosslinks in the documentation and the examples.
- Reworks the trigger module.
- Package a version of pylsl and liblsl with BSL as a backup
- Improves CIs workflows
- Improves testing
Scientific Software - Peer-reviewed
- Python
Published by mscheltienne almost 4 years ago