explorepy 1.8.2__tar.gz → 4.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {explorepy-1.8.2 → explorepy-4.1.0}/.bumpversion.cfg +2 -4
- explorepy-4.1.0/AUTHORS.rst +11 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/CHANGELOG.rst +53 -2
- {explorepy-1.8.2 → explorepy-4.1.0}/MANIFEST.in +1 -1
- explorepy-4.1.0/PKG-INFO +207 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/README.rst +6 -6
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/conf.py +4 -9
- explorepy-4.1.0/docs/explore_legacy_devices.rst +11 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/index.rst +1 -0
- explorepy-4.1.0/docs/installation.rst +153 -0
- explorepy-4.1.0/docs/logo.jpg +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/reference/explorepy.rst +0 -5
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/requirements.txt +4 -4
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/usage.rst +103 -107
- explorepy-4.1.0/pyproject.toml +62 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/setup.cfg +1 -3
- explorepy-4.1.0/src/explorepy/BLEClient.py +237 -0
- explorepy-4.1.0/src/explorepy/BTClient.py +62 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/__init__.py +7 -9
- explorepy-4.1.0/src/explorepy/_exceptions.py +70 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/bt_mock_client.py +4 -8
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/cli.py +2 -26
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/command.py +8 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/explore.py +194 -123
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/filters.py +12 -5
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/log_config.py +1 -1
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/packet.py +276 -57
- explorepy-4.1.0/src/explorepy/parser.py +405 -0
- explorepy-4.1.0/src/explorepy/serial_client.py +178 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/settings_manager.py +57 -7
- explorepy-4.1.0/src/explorepy/stream_processor.py +614 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/tools.py +365 -185
- explorepy-4.1.0/src/explorepy.egg-info/PKG-INFO +207 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/SOURCES.txt +19 -58
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/requires.txt +6 -4
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/conftest.py +36 -12
- explorepy-4.1.0/tests/res/in/device_info_ble +0 -0
- explorepy-4.1.0/tests/res/in/device_info_v2_2 +0 -0
- explorepy-4.1.0/tests/res/in/eeg16_ble +0 -0
- explorepy-4.1.0/tests/res/in/eeg98_ble +0 -0
- explorepy-4.1.0/tests/res/in/orn_2 +0 -0
- explorepy-4.1.0/tests/res/in/trigger_in +0 -0
- explorepy-4.1.0/tests/res/out/device_info_ble_out.txt +16 -0
- explorepy-4.1.0/tests/res/out/device_info_v2_2_out.txt +12 -0
- explorepy-4.1.0/tests/res/out/eeg16_ble_out.txt +9 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg32_out.txt +2 -1
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg94_out.txt +2 -1
- explorepy-4.1.0/tests/res/out/eeg98_ble_out.txt +9 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_out.txt +2 -1
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_usbc_out.txt +2 -1
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_usbc_out_2.txt +2 -1
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/env_out.txt +1 -1
- explorepy-4.1.0/tests/res/out/orn_2_out.txt +10 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/push_marker_out.txt +2 -1
- explorepy-4.1.0/tests/res/out/trigger_in_out.txt +9 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/test_packet.py +203 -40
- explorepy-1.8.2/AUTHORS.rst +0 -9
- explorepy-1.8.2/PKG-INFO +0 -343
- explorepy-1.8.2/docs/installation.rst +0 -168
- explorepy-1.8.2/docs/logo.png +0 -0
- explorepy-1.8.2/lib/linux/BTSerialPortBinding.cpp +0 -197
- explorepy-1.8.2/lib/linux/BTSerialPortBinding.h +0 -95
- explorepy-1.8.2/lib/linux/DeviceINQ.cpp +0 -173
- explorepy-1.8.2/lib/linux/ExploreException.h +0 -85
- explorepy-1.8.2/lib/linux/ExploreExceptionConstants.h +0 -22
- explorepy-1.8.2/lib/linux/ExploreSDK.h +0 -70
- explorepy-1.8.2/lib/linux/exploresdk.py +0 -364
- explorepy-1.8.2/lib/linux/exploresearch.i +0 -14
- explorepy-1.8.2/lib/linux/serialport.i +0 -37
- explorepy-1.8.2/lib/linux/swig_interface.i +0 -34
- explorepy-1.8.2/lib/linux/swig_interface_wrap.cxx +0 -11444
- explorepy-1.8.2/lib/mac/BTSerialPortBinding.h +0 -94
- explorepy-1.8.2/lib/mac/BTSerialPortBinding.mm +0 -155
- explorepy-1.8.2/lib/mac/BluetoothDeviceResources.h +0 -32
- explorepy-1.8.2/lib/mac/BluetoothDeviceResources.mm +0 -20
- explorepy-1.8.2/lib/mac/BluetoothWorker.h +0 -64
- explorepy-1.8.2/lib/mac/BluetoothWorker.mm +0 -341
- explorepy-1.8.2/lib/mac/DeviceINQ.mm +0 -123
- explorepy-1.8.2/lib/mac/ExploreException.h +0 -87
- explorepy-1.8.2/lib/mac/ExploreExceptionConstants.h +0 -22
- explorepy-1.8.2/lib/mac/ExploreSDK.h +0 -70
- explorepy-1.8.2/lib/mac/_exploresdk.so +0 -0
- explorepy-1.8.2/lib/mac/btScan +0 -0
- explorepy-1.8.2/lib/mac/btScan.mm +0 -69
- explorepy-1.8.2/lib/mac/create_shared_lib.sh +0 -48
- explorepy-1.8.2/lib/mac/exploresdk.py +0 -308
- explorepy-1.8.2/lib/mac/exploresearch.i +0 -14
- explorepy-1.8.2/lib/mac/json.hpp +0 -20561
- explorepy-1.8.2/lib/mac/pipe.c +0 -1233
- explorepy-1.8.2/lib/mac/pipe.h +0 -265
- explorepy-1.8.2/lib/mac/serialport.i +0 -41
- explorepy-1.8.2/lib/mac/swig_interface.i +0 -37
- explorepy-1.8.2/lib/mac/swig_interface_wrap.cxx +0 -10704
- explorepy-1.8.2/lib/windows/BTSerialPortBinding.cpp +0 -211
- explorepy-1.8.2/lib/windows/BTSerialPortBinding.h +0 -93
- explorepy-1.8.2/lib/windows/BluetoothHelpers.cpp +0 -63
- explorepy-1.8.2/lib/windows/BluetoothHelpers.h +0 -12
- explorepy-1.8.2/lib/windows/DeviceINQ.cpp +0 -304
- explorepy-1.8.2/lib/windows/ExploreException.h +0 -108
- explorepy-1.8.2/lib/windows/ExploreExceptionConstants.h +0 -43
- explorepy-1.8.2/lib/windows/ExploreSDK.h +0 -31
- explorepy-1.8.2/lib/windows/ex.py +0 -8
- explorepy-1.8.2/lib/windows/exploresdk.py +0 -378
- explorepy-1.8.2/lib/windows/exploresearch.i +0 -26
- explorepy-1.8.2/lib/windows/serialport.i +0 -33
- explorepy-1.8.2/lib/windows/swig_interface.i +0 -40
- explorepy-1.8.2/lib/windows/swig_interface_wrap.cxx +0 -11896
- explorepy-1.8.2/lib/windows/winsock_wrapper.h +0 -9
- explorepy-1.8.2/setup.py +0 -129
- explorepy-1.8.2/src/explorepy/_exceptions.py +0 -42
- explorepy-1.8.2/src/explorepy/btcpp.py +0 -175
- explorepy-1.8.2/src/explorepy/dashboard/dashboard.py +0 -761
- explorepy-1.8.2/src/explorepy/dashboard/templates/index.html +0 -117
- explorepy-1.8.2/src/explorepy/dashboard/theme.yaml +0 -21
- explorepy-1.8.2/src/explorepy/exploresdk.py +0 -368
- explorepy-1.8.2/src/explorepy/parser.py +0 -210
- explorepy-1.8.2/src/explorepy/stream_processor.py +0 -356
- explorepy-1.8.2/src/explorepy.egg-info/PKG-INFO +0 -343
- explorepy-1.8.2/src/explorepy.egg-info/not-zip-safe +0 -1
- explorepy-1.8.2/tests/__init__.py +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/.cookiecutterrc +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/.coveragerc +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/.editorconfig +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/CONTRIBUTING.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/LICENSE +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/authors.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/changelog.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/contributing.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/readme.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/reference/index.rst +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/docs/spelling_wordlist.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/bt_mock_server.py +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/debug.py +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/dependency_links.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/entry_points.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/top_level.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/README.md +0 -0
- {explorepy-1.8.2/src/explorepy/dashboard → explorepy-4.1.0/tests}/__init__.py +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/calibration_info +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/calibration_info_usbc +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/cmd_rcv +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/cmd_stat +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/device_info +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/device_info_v2 +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/disconnect +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg32 +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg94 +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98 +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98_usbc +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98_usbc_2 +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/env +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/orn +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/orn_matrix.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/push_marker +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/axis_and_angle.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/calibration_info_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/calibration_info_usbc_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/cmd_rcv_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/cmd_stat_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/device_info_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/device_info_v2_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/disconnect_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_out_fake.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/orn_out.txt +0 -0
- {explorepy-1.8.2 → explorepy-4.1.0}/tox.ini +0 -0
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
[bumpversion]
|
|
2
|
-
current_version = 1.
|
|
2
|
+
current_version = 4.1.0
|
|
3
3
|
commit = False
|
|
4
4
|
tag = False
|
|
5
5
|
|
|
6
|
-
[bumpversion:file:
|
|
7
|
-
search = version='{current_version}'
|
|
8
|
-
replace = version='{new_version}'
|
|
6
|
+
[bumpversion:file:pyproject.toml]
|
|
9
7
|
|
|
10
8
|
[bumpversion:file:README.rst]
|
|
11
9
|
search = v{current_version}.
|
|
@@ -2,13 +2,64 @@
|
|
|
2
2
|
Changelog
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
+
4.1.0 (31.3.2025)
|
|
6
|
+
------------------
|
|
7
|
+
* Improve bluetooth connection UX
|
|
8
|
+
* Add more data in IMU packet
|
|
9
|
+
* Improve USB streaming
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
4.0.0 (14.3.2025)
|
|
13
|
+
------------------
|
|
14
|
+
* Deprecate support for Explore legacy devices
|
|
15
|
+
* Improve binary file conversion and stream parser algorithm
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
3.2.1 (31.1.2025)
|
|
19
|
+
------------------
|
|
20
|
+
* Hotfix impedance calculation
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
3.2.0 (31.1.2025)
|
|
24
|
+
------------------
|
|
25
|
+
* Fix critical bug in settings file modification
|
|
26
|
+
* Improve BT communication
|
|
27
|
+
* Disable impedance on fresh connection
|
|
28
|
+
* Introduce new sampling rates
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
3.1.0 (8.11.2024)
|
|
32
|
+
------------------
|
|
33
|
+
* Add USB streaming support
|
|
34
|
+
* Improve BT communication
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
3.0.1 (28.08.2024)
|
|
38
|
+
------------------
|
|
39
|
+
* Improve device connectivity
|
|
40
|
+
* Add text marker support
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
3.0.0 (7.6.2024)
|
|
44
|
+
------------------
|
|
45
|
+
* Improve Mac OSX support
|
|
46
|
+
* Add Support for Explore Pro
|
|
47
|
+
* Robust data parsing
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
2.0.0 (5.1.2024)
|
|
51
|
+
------------------
|
|
52
|
+
* Add Mac OSX support
|
|
53
|
+
* Remove browser based visualization support
|
|
54
|
+
* Update build script for docs
|
|
55
|
+
|
|
56
|
+
|
|
5
57
|
1.8.2 (28.8.2023)
|
|
6
58
|
------------------
|
|
7
59
|
* Improve explore mock device
|
|
8
60
|
* Add yaml file for RTD build
|
|
9
61
|
|
|
10
62
|
|
|
11
|
-
|
|
12
63
|
1.8.1 (11.7.2023)
|
|
13
64
|
------------------
|
|
14
65
|
* Bugfix record data
|
|
@@ -27,7 +78,7 @@ Changelog
|
|
|
27
78
|
|
|
28
79
|
1.7.0 (21.12.2022)
|
|
29
80
|
------------------
|
|
30
|
-
* Add
|
|
81
|
+
* Add support for new explore+ 32 ch device
|
|
31
82
|
* Sorted timestamps in CSV
|
|
32
83
|
* Settings file to preserve experiment settings
|
|
33
84
|
|
explorepy-4.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: explorepy
|
|
3
|
+
Version: 4.1.0
|
|
4
|
+
Author-email: MentaLab Hub <support@mentab.org>
|
|
5
|
+
License: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/Mentalab-hub/explorepy
|
|
7
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: Intended Audience :: Science/Research
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Operating System :: MacOS
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
License-File: AUTHORS.rst
|
|
24
|
+
Requires-Dist: numpy
|
|
25
|
+
Requires-Dist: scipy
|
|
26
|
+
Requires-Dist: pyEDFlib==0.1.38
|
|
27
|
+
Requires-Dist: click==7.1.2
|
|
28
|
+
Requires-Dist: appdirs==1.4.3
|
|
29
|
+
Requires-Dist: sentry_sdk==2.8.0
|
|
30
|
+
Requires-Dist: mne
|
|
31
|
+
Requires-Dist: eeglabio
|
|
32
|
+
Requires-Dist: pandas
|
|
33
|
+
Requires-Dist: pyserial
|
|
34
|
+
Requires-Dist: pyyaml
|
|
35
|
+
Requires-Dist: bleak==0.22.3
|
|
36
|
+
Requires-Dist: pylsl
|
|
37
|
+
Requires-Dist: numba
|
|
38
|
+
Provides-Extra: test
|
|
39
|
+
Requires-Dist: pytest==6.2.5; extra == "test"
|
|
40
|
+
Requires-Dist: pytest-mock==3.10.0; extra == "test"
|
|
41
|
+
Requires-Dist: pytest-html==3.2.0; extra == "test"
|
|
42
|
+
Requires-Dist: flake8==4.0.1; extra == "test"
|
|
43
|
+
Requires-Dist: isort==5.10.1; extra == "test"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
.. image:: logo.png
|
|
47
|
+
:scale: 100 %
|
|
48
|
+
:align: left
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
.. start-badges
|
|
52
|
+
|
|
53
|
+
|docs| |version| |wheel| |supported-versions| |commits-since|
|
|
54
|
+
|
|
55
|
+
.. |docs| image:: https://readthedocs.org/projects/explorepy/badge/?style=flat
|
|
56
|
+
:target: https://readthedocs.org/projects/explorepy
|
|
57
|
+
:alt: Documentation Status
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
.. |version| image:: https://img.shields.io/pypi/v/explorepy.svg
|
|
61
|
+
:alt: PyPI Package latest release
|
|
62
|
+
:target: https://pypi.org/project/explorepy
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.1.0.svg
|
|
66
|
+
:alt: Commits since latest release
|
|
67
|
+
:target: https://github.com/Mentalab-hub/explorepy/compare/v4.1.0...master
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
.. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
|
|
71
|
+
:alt: PyPI Wheel
|
|
72
|
+
:target: https://pypi.org/project/explorepy
|
|
73
|
+
|
|
74
|
+
.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/explorepy.svg
|
|
75
|
+
:alt: Supported versions
|
|
76
|
+
:target: https://pypi.org/project/explorepy
|
|
77
|
+
|
|
78
|
+
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/explorepy.svg
|
|
79
|
+
:alt: Supported implementations
|
|
80
|
+
:target: https://pypi.org/project/explorepy
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
.. end-badges
|
|
84
|
+
|
|
85
|
+
=========================
|
|
86
|
+
``explorepy`` overview
|
|
87
|
+
=========================
|
|
88
|
+
|
|
89
|
+
``explorepy`` is an open-source Python API designed to collect and process ExG data using Mentalab's Explore device. Amongst other things, ``explorepy`` provides the following features:
|
|
90
|
+
|
|
91
|
+
* Real-time streaming of ExG, orientation and environmental data.
|
|
92
|
+
* Real-time visualization of ExG, orientation and environmental data.
|
|
93
|
+
* Data recording in CSV and BDF+ formats.
|
|
94
|
+
* Integration with LabStreaming Layer.
|
|
95
|
+
* Electrode impedance measurements.
|
|
96
|
+
* Explore device configuration.
|
|
97
|
+
|
|
98
|
+
Quick installation
|
|
99
|
+
==================
|
|
100
|
+
For Windows users, the best way to install ``explorepy`` is to download the latest ``explorepy`` version from the `release page <https://github.com/Mentalab-hub/explorepy/releases>`_. Please note that dependencies will install automatically from the release page.
|
|
101
|
+
|
|
102
|
+
For other operating systems, or to build the package manually on Windows, please refer to the information below.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
Requirements
|
|
106
|
+
------------
|
|
107
|
+
|
|
108
|
+
* Python 3.10 to Python 3.12.
|
|
109
|
+
* Visual Studio 2015 community edition (Windows only. For package building).
|
|
110
|
+
* Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
Detailed installation instructions can be found on the `installation page <https://explorepy.readthedocs.io/en/latest/installation.html>`_.
|
|
114
|
+
|
|
115
|
+
To install ``explorepy`` from PyPI run:
|
|
116
|
+
::
|
|
117
|
+
|
|
118
|
+
pip install explorepy
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
To install the latest development version (git must be installed before running this command):
|
|
122
|
+
::
|
|
123
|
+
|
|
124
|
+
pip install git+https://github.com/Mentalab-hub/explorepy
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
Get started
|
|
128
|
+
===========
|
|
129
|
+
|
|
130
|
+
CLI command
|
|
131
|
+
-----------
|
|
132
|
+
To check ``explorepy`` is running use:
|
|
133
|
+
::
|
|
134
|
+
explorepy acquire -n Explore_XXXX
|
|
135
|
+
|
|
136
|
+
For help, use:
|
|
137
|
+
::
|
|
138
|
+
explorepy -h
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
Python code
|
|
142
|
+
-----------
|
|
143
|
+
|
|
144
|
+
In Python you can connect to the Explore device and print data using:
|
|
145
|
+
|
|
146
|
+
::
|
|
147
|
+
|
|
148
|
+
import explorepy
|
|
149
|
+
explorer = explorepy.Explore()
|
|
150
|
+
explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
|
|
151
|
+
explorer.acquire()
|
|
152
|
+
|
|
153
|
+
You can also visualize the data in real-time.
|
|
154
|
+
|
|
155
|
+
::
|
|
156
|
+
|
|
157
|
+
import explorepy
|
|
158
|
+
explorer = explorepy.Explore()
|
|
159
|
+
explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
|
|
160
|
+
|
|
161
|
+
Documentation
|
|
162
|
+
=============
|
|
163
|
+
|
|
164
|
+
For full API documentation, visit: https://explorepy.readthedocs.io/.
|
|
165
|
+
|
|
166
|
+
Troubleshooting
|
|
167
|
+
===============
|
|
168
|
+
If you are having problems, please check the `troubleshooting <https://explorepy.readthedocs.io/en/latest/installation.html#troubleshooting>`_
|
|
169
|
+
section of the documentation.
|
|
170
|
+
|
|
171
|
+
If you are still having problems, send us your error log via Sentry (note: Explorepy will send the log
|
|
172
|
+
automatically once you have provided permission), or send us the log file via email to support@mentalab.com. The log file is usually found under:
|
|
173
|
+
|
|
174
|
+
* Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
|
|
175
|
+
* Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
|
|
176
|
+
* Mac OS: ``/Users/<USER_NAME>/Library/Logs/explorepy/explorepy.log``
|
|
177
|
+
|
|
178
|
+
You can also create a new issue in the GitHub repository.
|
|
179
|
+
|
|
180
|
+
Authors
|
|
181
|
+
=======
|
|
182
|
+
- `Mohamad Atayi`_
|
|
183
|
+
- `Salman Rahman`_
|
|
184
|
+
- `Andrea Escartin`_
|
|
185
|
+
- `Sonja Stefani`_
|
|
186
|
+
- `Alex Platt`_
|
|
187
|
+
- `Andreas Gutsche`_
|
|
188
|
+
- `Masooma Fazelian`_
|
|
189
|
+
- `Philipp Jakovleski`_
|
|
190
|
+
- `Florian Sesser`_
|
|
191
|
+
- `Sebastian Herberger`_
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
.. _Mohamad Atayi: https://github.com/bmeatayi
|
|
195
|
+
.. _Salman Rahman: https://github.com/salman2135
|
|
196
|
+
.. _Andrea Escartin: https://github.com/andrea-escartin
|
|
197
|
+
.. _Sonja Stefani: https://github.com/SonjaSt
|
|
198
|
+
.. _Alex Platt: https://github.com/Nujanauss
|
|
199
|
+
.. _Andreas Gutsche: https://github.com/andyman410
|
|
200
|
+
.. _Masooma Fazelian: https://github.com/fazelian
|
|
201
|
+
.. _Philipp Jakovleski: https://github.com/philippjak
|
|
202
|
+
.. _Florian Sesser : https://github.com/hacklschorsch
|
|
203
|
+
.. _Sebastian Herberger: https://github.com/SHerberger
|
|
204
|
+
|
|
205
|
+
License
|
|
206
|
+
=======
|
|
207
|
+
This project is licensed under the `MIT <https://github.com/Mentalab-hub/explorepy/blob/master/LICENSE>`_ license. You can reach us at contact@mentalab.com.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.. image:: logo.png
|
|
2
2
|
:scale: 100 %
|
|
3
|
-
:align:
|
|
3
|
+
:align: left
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
.. start-badges
|
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
:target: https://pypi.org/project/explorepy
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/
|
|
20
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.1.0.svg
|
|
21
21
|
:alt: Commits since latest release
|
|
22
|
-
:target: https://github.com/Mentalab-hub/explorepy/compare/
|
|
22
|
+
:target: https://github.com/Mentalab-hub/explorepy/compare/v4.1.0...master
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
.. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
|
|
@@ -54,13 +54,13 @@ Quick installation
|
|
|
54
54
|
==================
|
|
55
55
|
For Windows users, the best way to install ``explorepy`` is to download the latest ``explorepy`` version from the `release page <https://github.com/Mentalab-hub/explorepy/releases>`_. Please note that dependencies will install automatically from the release page.
|
|
56
56
|
|
|
57
|
-
For other operating systems, or to build the package manually on Windows, please refer to the information below.
|
|
57
|
+
For other operating systems, or to build the package manually on Windows, please refer to the information below.
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
Requirements
|
|
61
61
|
------------
|
|
62
62
|
|
|
63
|
-
* Python 3.
|
|
63
|
+
* Python 3.10 to Python 3.12.
|
|
64
64
|
* Visual Studio 2015 community edition (Windows only. For package building).
|
|
65
65
|
* Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
|
|
66
66
|
|
|
@@ -124,7 +124,7 @@ If you are having problems, please check the `troubleshooting <https://explorepy
|
|
|
124
124
|
section of the documentation.
|
|
125
125
|
|
|
126
126
|
If you are still having problems, send us your error log via Sentry (note: Explorepy will send the log
|
|
127
|
-
automatically once you have provided permission), or send us the log file via email to
|
|
127
|
+
automatically once you have provided permission), or send us the log file via email to support@mentalab.com. The log file is usually found under:
|
|
128
128
|
|
|
129
129
|
* Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
|
|
130
130
|
* Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
|
|
@@ -4,8 +4,7 @@ import os
|
|
|
4
4
|
import sys
|
|
5
5
|
|
|
6
6
|
sys.path.insert(0, os.path.abspath('../src/explorepy/'))
|
|
7
|
-
autodoc_mock_imports = ['bluetooth', 'pylsl', 'bokeh', 'tornado'
|
|
8
|
-
'explorepy.exploresdk', 'explorepy._exploresdk']
|
|
7
|
+
autodoc_mock_imports = ['bluetooth', 'pylsl', 'bokeh', 'tornado']
|
|
9
8
|
|
|
10
9
|
extensions = [
|
|
11
10
|
'sphinx.ext.autodoc',
|
|
@@ -26,22 +25,18 @@ if os.getenv('SPELLCHECK'):
|
|
|
26
25
|
source_suffix = '.rst'
|
|
27
26
|
master_doc = 'index'
|
|
28
27
|
project = 'explorepy'
|
|
29
|
-
year = '2018-
|
|
28
|
+
year = '2018-2025'
|
|
30
29
|
author = 'Mentalab GmbH.'
|
|
31
30
|
copyright = '{0}, {1}'.format(year, author)
|
|
32
|
-
version = release = '1.
|
|
33
|
-
|
|
31
|
+
version = release = '4.1.0'
|
|
34
32
|
pygments_style = 'trac'
|
|
35
33
|
templates_path = ['.']
|
|
36
34
|
extlinks = {
|
|
37
35
|
'issue': ('https://github.com/Mentalab-hub/explorepy/issues/%s', '#'),
|
|
38
36
|
'pr': ('https://github.com/Mentalab-hub/explorepy/pull/%s', 'PR #'),
|
|
39
37
|
}
|
|
40
|
-
# on_rtd is whether we are on readthedocs.org
|
|
41
|
-
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
html_theme = 'sphinx_rtd_theme'
|
|
39
|
+
html_theme = 'sphinx_rtd_theme'
|
|
45
40
|
|
|
46
41
|
html_use_smartypants = True
|
|
47
42
|
html_last_updated_fmt = '%b %d, %Y'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
============
|
|
2
|
+
Legacy device and explorepy support
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
Starting from explorepy 4.0.0, latest version of explorepy will only support Explore Pro devices, meaning users will not be able to use legacy devices with explorepy 4.0.0 and onwards.
|
|
6
|
+
If you want to install explorepy for legacy devices, please use the following command for windows and linux.
|
|
7
|
+
.. code-block:: bash
|
|
8
|
+
|
|
9
|
+
pip install explorepy==3.2.1
|
|
10
|
+
|
|
11
|
+
To install explorepy 3.2.1 in Mac, please contact support@mentalab.com.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
============
|
|
2
|
+
Installation
|
|
3
|
+
============
|
|
4
|
+
|
|
5
|
+
Minimal Requirements
|
|
6
|
+
--------------------
|
|
7
|
+
* Python 3.12 and upwards. We recommend using Python 3.12.
|
|
8
|
+
* Microsoft Build Tools for Visual Studio 2019 (only Windows)
|
|
9
|
+
* 6GB RAM (minimum 1GB *free* RAM during the session)
|
|
10
|
+
* Intel i5 or higher (2x2.5GHz) CPU
|
|
11
|
+
|
|
12
|
+
Recommended Requirements
|
|
13
|
+
------------------------
|
|
14
|
+
* Python 3.12
|
|
15
|
+
* Microsoft Build Tools for Visual Studio 2019 (only Windows)
|
|
16
|
+
* 8GB RAM
|
|
17
|
+
* Intel i7 or higher CPU
|
|
18
|
+
|
|
19
|
+
How to install
|
|
20
|
+
--------------
|
|
21
|
+
|
|
22
|
+
Option 1: Installing via installer file (basic)
|
|
23
|
+
"""""""""""""""""""""""""""""""""""""""""""""""
|
|
24
|
+
|
|
25
|
+
Windows and Mac
|
|
26
|
+
^^^^^^^^^^^^^^^
|
|
27
|
+
|
|
28
|
+
*This option is best for users who only intend to use functionalities offered by* ``explorepy`` *via a graphical user interface*
|
|
29
|
+
|
|
30
|
+
For example, if you want to quickly visualize and record data and don't need the command line interface or to use it in your own Python script, use this option.
|
|
31
|
+
|
|
32
|
+
If you intend to call ``explorepy`` from the command line or a Python script (e.g. from an experiment script), install ``explorepy`` via Anaconda/pip instead.
|
|
33
|
+
|
|
34
|
+
For Windows and Mac, the standalone desktop software ExploreDesktop can be installed using the installer files uploaded to the
|
|
35
|
+
`release page <https://github.com/Mentalab-hub/explore-desktop-release/releases/latest/>`_. Please note that the dependencies will be installed automatically and bundled locally with the installed software.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
Option 2: Installing from Python Package Index (PyPI) and pip (advanced)
|
|
39
|
+
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
.. note::
|
|
43
|
+
|
|
44
|
+
Explore legacy device support is **deprecated** in ExplorePy. See the documentation on :doc:`explore_legacy_devices`.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
*To install explorepy for any Python version below 3.10, please contact support@mentalab.com*
|
|
48
|
+
|
|
49
|
+
*This option is best for users who intend to include* ``explorepy`` *functionalities in their own Python scripts or use it from the command line.*
|
|
50
|
+
|
|
51
|
+
For an overview of ``explorepy`` commands, click `here <https://explorepy.readthedocs.io/en/latest/usage.html#command-line-interface>`_.
|
|
52
|
+
|
|
53
|
+
Windows
|
|
54
|
+
^^^^^^^
|
|
55
|
+
|
|
56
|
+
To install the ``explorepy`` API and all its dependencies using pip on Windows:
|
|
57
|
+
|
|
58
|
+
1. Install Anaconda (or any other Python distribution; these instructions pertain to Anaconda only). Download and run the `Anaconda installer for windows <https://www.anaconda.com/download/success>`_.
|
|
59
|
+
2. Install `Microsoft Build Tools for Visual Studio 2019 <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_. Select *Desktop development with C++* in the workloads tab. Make sure that *MSVCv142 - VS 2019 C++ x64/x86 build tools* and the latest version of *Windows 10 SDK* are checked.
|
|
60
|
+
3. Open the Anaconda command prompt.
|
|
61
|
+
4. We recommend using a conda environment. To do this:
|
|
62
|
+
|
|
63
|
+
a. In the Anaconda command prompt: ``conda create -n myenv python=3.12``
|
|
64
|
+
b. Activate the conda environment: ``conda activate myenv``
|
|
65
|
+
|
|
66
|
+
5. Upgrade your pip: ``python -m pip install --upgrade pip``
|
|
67
|
+
6. Install liblsl: ``conda install -c conda-forge liblsl``
|
|
68
|
+
7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
|
|
69
|
+
|
|
70
|
+
Ubuntu
|
|
71
|
+
^^^^^^
|
|
72
|
+
1. From the terminal, run these commands one by one: ``sudo apt-get install libbluetooth-dev`` and ``sudo apt-get install build-essential``.
|
|
73
|
+
2. We recommend installing Anaconda. Download and installer `Anaconda<https://www.anaconda.com/download>`/Miniconda/.
|
|
74
|
+
3. We recommend using a virtual environment in Conda. To do this:
|
|
75
|
+
|
|
76
|
+
a. In the Anaconda command prompt: ``conda create -n myenv python=3.12``
|
|
77
|
+
b. Activate the conda environment: ``conda activate myenv``
|
|
78
|
+
|
|
79
|
+
4. Upgrade your pip: ``python -m pip install --upgrade pip``
|
|
80
|
+
5. Install liblsl: ``conda install -c conda-forge liblsl``
|
|
81
|
+
6. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
|
|
82
|
+
7. From the terminal, run: ``sudo apt install libxcb-cursor0``
|
|
83
|
+
|
|
84
|
+
Set up USB streaming in Linux
|
|
85
|
+
+++++++++++++++++++++++++++++
|
|
86
|
+
|
|
87
|
+
a. Set up ``udev`` rules for appropiate permission to ``/dev/ttyACM*`` in Linux
|
|
88
|
+
|
|
89
|
+
*Steps to Execute the Udev Script Manually*
|
|
90
|
+
|
|
91
|
+
1. Create a file named ``setup_udev_rule.sh`` and include the following script
|
|
92
|
+
|
|
93
|
+
::
|
|
94
|
+
|
|
95
|
+
#!/bin/bash
|
|
96
|
+
|
|
97
|
+
RULE='SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", SYMLINK+="stm_virtual_com", MODE="0666"'
|
|
98
|
+
|
|
99
|
+
echo "Creating udev rule..."
|
|
100
|
+
echo "$RULE" | sudo tee /etc/udev/rules.d/99-stm-virtual-com.rules > /dev/null
|
|
101
|
+
|
|
102
|
+
sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
103
|
+
echo "udev rule has been created successfully!"
|
|
104
|
+
echo "You can access your device at /dev/$SYMLINK_NAME when it is connected."
|
|
105
|
+
|
|
106
|
+
2. Make the ``setup_udev_rule.sh`` executable ::
|
|
107
|
+
|
|
108
|
+
chmod +x setup_udev_rule.sh
|
|
109
|
+
|
|
110
|
+
3. Execute the script ::
|
|
111
|
+
|
|
112
|
+
./setup_udev_rule.sh
|
|
113
|
+
|
|
114
|
+
*To remove the udev rule when no longer required* ::
|
|
115
|
+
|
|
116
|
+
sudo rm /etc/udev/rules.d/99-stm-virtual-com.rules
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
b. Alternate method: Temporarily granting appropriate permissions to ``/dev/ttyACM*``
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
1. Identify the device (ttyACM0, ttyACM1, ttyACM2, etc) in ``/dev`` directory
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
2. Execute this command in the terminal (replace * with appropiate id) ::
|
|
126
|
+
|
|
127
|
+
chmod 666 /dev/ttyACM*
|
|
128
|
+
|
|
129
|
+
Mac
|
|
130
|
+
^^^
|
|
131
|
+
1. Install ``XCode`` from the Mac App store. For this, you may need to upgrade to the latest version of MacOS. For older versions of MacOS, find compatible versions of ``XCode`` `here <https://en.wikipedia.org/wiki/Xcode>`_. All old ``XCode`` versions are available `here <https://developer.apple.com/download/more/>`_.
|
|
132
|
+
2. Accept the license agreement: ``sudo xcodebuild -license``.
|
|
133
|
+
3. It is best to install Anaconda. Download and run the `Anaconda installer for Mac <https://www.anaconda.com/download/success>`_. For older versions of MacOS, compatible version of Anaconda can be found in `this table <https://docs.continuum.io/anaconda/install/#old-os>`_ and downloaded `here <https://repo.anaconda.com/archive/index.html>`_.
|
|
134
|
+
4. We recommend using a conda environment.
|
|
135
|
+
|
|
136
|
+
a. In the Anaconda command prompt: ``conda create -n myenv python=3.10``
|
|
137
|
+
b. Activate the conda environment: ``conda activate myenv``
|
|
138
|
+
|
|
139
|
+
5. Upgrade your pip: ``python -m pip install --upgrade pip``
|
|
140
|
+
6. Install liblsl: ``conda install -c conda-forge liblsl``
|
|
141
|
+
7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
|
|
142
|
+
8. Connect your Explore device from the Bluetooth menu and run your Python script.
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
Quick test
|
|
146
|
+
----------
|
|
147
|
+
|
|
148
|
+
*Note: If you installed the graphical user interface ExploreDesktop as outlined above, explorepy won't be available from the command line.*
|
|
149
|
+
|
|
150
|
+
* Open the Anaconda command prompt.
|
|
151
|
+
* Activate the virtual environment that you made before installing explorepy: ``conda activate myenv``
|
|
152
|
+
* Run ``explorepy acquire -n DEVICE-NAME``
|
|
153
|
+
* To stop the command execution, press ``Ctrl+C``
|
|
Binary file
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
appdirs==1.4.3
|
|
2
|
-
bokeh==2.2.3
|
|
3
2
|
click==7.1.2
|
|
4
|
-
Jinja2==3.0.0
|
|
5
3
|
mne==0.24.1
|
|
6
4
|
numpy==1.24.4
|
|
7
5
|
pandas==1.3.4
|
|
@@ -10,5 +8,7 @@ pylsl==1.16.1
|
|
|
10
8
|
PyYAML==6.0.1
|
|
11
9
|
PyYAML==6.0.1
|
|
12
10
|
scipy==1.11.1
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
tornado==6.4.2
|
|
12
|
+
sentry_sdk==2.8.0
|
|
13
|
+
sphinx-rtd-theme==1.3.0
|
|
14
|
+
sphinx==7.2.4
|