explorepy 1.8.2__tar.gz → 4.2.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.
Files changed (165) hide show
  1. {explorepy-1.8.2 → explorepy-4.2.0}/.bumpversion.cfg +2 -4
  2. explorepy-4.2.0/AUTHORS.rst +11 -0
  3. {explorepy-1.8.2 → explorepy-4.2.0}/CHANGELOG.rst +62 -2
  4. {explorepy-1.8.2 → explorepy-4.2.0}/MANIFEST.in +1 -1
  5. explorepy-4.2.0/PKG-INFO +193 -0
  6. {explorepy-1.8.2 → explorepy-4.2.0}/README.rst +11 -25
  7. {explorepy-1.8.2 → explorepy-4.2.0}/docs/conf.py +4 -9
  8. explorepy-4.2.0/docs/explore_legacy_devices.rst +11 -0
  9. {explorepy-1.8.2 → explorepy-4.2.0}/docs/index.rst +1 -0
  10. explorepy-4.2.0/docs/installation.rst +140 -0
  11. explorepy-4.2.0/docs/logo.jpg +0 -0
  12. {explorepy-1.8.2 → explorepy-4.2.0}/docs/reference/explorepy.rst +0 -5
  13. {explorepy-1.8.2 → explorepy-4.2.0}/docs/requirements.txt +4 -4
  14. {explorepy-1.8.2 → explorepy-4.2.0}/docs/usage.rst +103 -139
  15. explorepy-4.2.0/pyproject.toml +62 -0
  16. {explorepy-1.8.2 → explorepy-4.2.0}/setup.cfg +1 -3
  17. explorepy-4.2.0/src/explorepy/BLEClient.py +237 -0
  18. explorepy-4.2.0/src/explorepy/BTClient.py +62 -0
  19. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/__init__.py +7 -9
  20. explorepy-4.2.0/src/explorepy/_exceptions.py +70 -0
  21. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/bt_mock_client.py +4 -8
  22. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/cli.py +1 -68
  23. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/command.py +8 -43
  24. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/explore.py +188 -188
  25. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/filters.py +12 -5
  26. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/log_config.py +1 -1
  27. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/packet.py +276 -57
  28. explorepy-4.2.0/src/explorepy/parser.py +405 -0
  29. explorepy-4.2.0/src/explorepy/serial_client.py +177 -0
  30. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/settings_manager.py +57 -7
  31. explorepy-4.2.0/src/explorepy/stream_processor.py +595 -0
  32. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/tools.py +342 -359
  33. explorepy-4.2.0/src/explorepy.egg-info/PKG-INFO +193 -0
  34. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy.egg-info/SOURCES.txt +19 -58
  35. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy.egg-info/requires.txt +6 -4
  36. {explorepy-1.8.2 → explorepy-4.2.0}/tests/conftest.py +36 -12
  37. explorepy-4.2.0/tests/res/in/device_info_ble +0 -0
  38. explorepy-4.2.0/tests/res/in/device_info_v2_2 +0 -0
  39. explorepy-4.2.0/tests/res/in/eeg16_ble +0 -0
  40. explorepy-4.2.0/tests/res/in/eeg98_ble +0 -0
  41. explorepy-4.2.0/tests/res/in/orn_2 +0 -0
  42. explorepy-4.2.0/tests/res/in/trigger_in +0 -0
  43. explorepy-4.2.0/tests/res/out/device_info_ble_out.txt +16 -0
  44. explorepy-4.2.0/tests/res/out/device_info_v2_2_out.txt +12 -0
  45. explorepy-4.2.0/tests/res/out/eeg16_ble_out.txt +9 -0
  46. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg32_out.txt +2 -1
  47. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg94_out.txt +2 -1
  48. explorepy-4.2.0/tests/res/out/eeg98_ble_out.txt +9 -0
  49. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg98_out.txt +2 -1
  50. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg98_usbc_out.txt +2 -1
  51. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg98_usbc_out_2.txt +2 -1
  52. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/env_out.txt +1 -1
  53. explorepy-4.2.0/tests/res/out/orn_2_out.txt +10 -0
  54. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/push_marker_out.txt +2 -1
  55. explorepy-4.2.0/tests/res/out/trigger_in_out.txt +9 -0
  56. {explorepy-1.8.2 → explorepy-4.2.0}/tests/test_packet.py +203 -40
  57. explorepy-1.8.2/AUTHORS.rst +0 -9
  58. explorepy-1.8.2/PKG-INFO +0 -343
  59. explorepy-1.8.2/docs/installation.rst +0 -168
  60. explorepy-1.8.2/docs/logo.png +0 -0
  61. explorepy-1.8.2/lib/linux/BTSerialPortBinding.cpp +0 -197
  62. explorepy-1.8.2/lib/linux/BTSerialPortBinding.h +0 -95
  63. explorepy-1.8.2/lib/linux/DeviceINQ.cpp +0 -173
  64. explorepy-1.8.2/lib/linux/ExploreException.h +0 -85
  65. explorepy-1.8.2/lib/linux/ExploreExceptionConstants.h +0 -22
  66. explorepy-1.8.2/lib/linux/ExploreSDK.h +0 -70
  67. explorepy-1.8.2/lib/linux/exploresdk.py +0 -364
  68. explorepy-1.8.2/lib/linux/exploresearch.i +0 -14
  69. explorepy-1.8.2/lib/linux/serialport.i +0 -37
  70. explorepy-1.8.2/lib/linux/swig_interface.i +0 -34
  71. explorepy-1.8.2/lib/linux/swig_interface_wrap.cxx +0 -11444
  72. explorepy-1.8.2/lib/mac/BTSerialPortBinding.h +0 -94
  73. explorepy-1.8.2/lib/mac/BTSerialPortBinding.mm +0 -155
  74. explorepy-1.8.2/lib/mac/BluetoothDeviceResources.h +0 -32
  75. explorepy-1.8.2/lib/mac/BluetoothDeviceResources.mm +0 -20
  76. explorepy-1.8.2/lib/mac/BluetoothWorker.h +0 -64
  77. explorepy-1.8.2/lib/mac/BluetoothWorker.mm +0 -341
  78. explorepy-1.8.2/lib/mac/DeviceINQ.mm +0 -123
  79. explorepy-1.8.2/lib/mac/ExploreException.h +0 -87
  80. explorepy-1.8.2/lib/mac/ExploreExceptionConstants.h +0 -22
  81. explorepy-1.8.2/lib/mac/ExploreSDK.h +0 -70
  82. explorepy-1.8.2/lib/mac/_exploresdk.so +0 -0
  83. explorepy-1.8.2/lib/mac/btScan +0 -0
  84. explorepy-1.8.2/lib/mac/btScan.mm +0 -69
  85. explorepy-1.8.2/lib/mac/create_shared_lib.sh +0 -48
  86. explorepy-1.8.2/lib/mac/exploresdk.py +0 -308
  87. explorepy-1.8.2/lib/mac/exploresearch.i +0 -14
  88. explorepy-1.8.2/lib/mac/json.hpp +0 -20561
  89. explorepy-1.8.2/lib/mac/pipe.c +0 -1233
  90. explorepy-1.8.2/lib/mac/pipe.h +0 -265
  91. explorepy-1.8.2/lib/mac/serialport.i +0 -41
  92. explorepy-1.8.2/lib/mac/swig_interface.i +0 -37
  93. explorepy-1.8.2/lib/mac/swig_interface_wrap.cxx +0 -10704
  94. explorepy-1.8.2/lib/windows/BTSerialPortBinding.cpp +0 -211
  95. explorepy-1.8.2/lib/windows/BTSerialPortBinding.h +0 -93
  96. explorepy-1.8.2/lib/windows/BluetoothHelpers.cpp +0 -63
  97. explorepy-1.8.2/lib/windows/BluetoothHelpers.h +0 -12
  98. explorepy-1.8.2/lib/windows/DeviceINQ.cpp +0 -304
  99. explorepy-1.8.2/lib/windows/ExploreException.h +0 -108
  100. explorepy-1.8.2/lib/windows/ExploreExceptionConstants.h +0 -43
  101. explorepy-1.8.2/lib/windows/ExploreSDK.h +0 -31
  102. explorepy-1.8.2/lib/windows/ex.py +0 -8
  103. explorepy-1.8.2/lib/windows/exploresdk.py +0 -378
  104. explorepy-1.8.2/lib/windows/exploresearch.i +0 -26
  105. explorepy-1.8.2/lib/windows/serialport.i +0 -33
  106. explorepy-1.8.2/lib/windows/swig_interface.i +0 -40
  107. explorepy-1.8.2/lib/windows/swig_interface_wrap.cxx +0 -11896
  108. explorepy-1.8.2/lib/windows/winsock_wrapper.h +0 -9
  109. explorepy-1.8.2/setup.py +0 -129
  110. explorepy-1.8.2/src/explorepy/_exceptions.py +0 -42
  111. explorepy-1.8.2/src/explorepy/btcpp.py +0 -175
  112. explorepy-1.8.2/src/explorepy/dashboard/dashboard.py +0 -761
  113. explorepy-1.8.2/src/explorepy/dashboard/templates/index.html +0 -117
  114. explorepy-1.8.2/src/explorepy/dashboard/theme.yaml +0 -21
  115. explorepy-1.8.2/src/explorepy/exploresdk.py +0 -368
  116. explorepy-1.8.2/src/explorepy/parser.py +0 -210
  117. explorepy-1.8.2/src/explorepy/stream_processor.py +0 -356
  118. explorepy-1.8.2/src/explorepy.egg-info/PKG-INFO +0 -343
  119. explorepy-1.8.2/src/explorepy.egg-info/not-zip-safe +0 -1
  120. explorepy-1.8.2/tests/__init__.py +0 -0
  121. {explorepy-1.8.2 → explorepy-4.2.0}/.cookiecutterrc +0 -0
  122. {explorepy-1.8.2 → explorepy-4.2.0}/.coveragerc +0 -0
  123. {explorepy-1.8.2 → explorepy-4.2.0}/.editorconfig +0 -0
  124. {explorepy-1.8.2 → explorepy-4.2.0}/CONTRIBUTING.rst +0 -0
  125. {explorepy-1.8.2 → explorepy-4.2.0}/LICENSE +0 -0
  126. {explorepy-1.8.2 → explorepy-4.2.0}/docs/authors.rst +0 -0
  127. {explorepy-1.8.2 → explorepy-4.2.0}/docs/changelog.rst +0 -0
  128. {explorepy-1.8.2 → explorepy-4.2.0}/docs/contributing.rst +0 -0
  129. {explorepy-1.8.2 → explorepy-4.2.0}/docs/readme.rst +0 -0
  130. {explorepy-1.8.2 → explorepy-4.2.0}/docs/reference/index.rst +0 -0
  131. {explorepy-1.8.2 → explorepy-4.2.0}/docs/spelling_wordlist.txt +0 -0
  132. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/bt_mock_server.py +0 -0
  133. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy/debug.py +0 -0
  134. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy.egg-info/dependency_links.txt +0 -0
  135. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy.egg-info/entry_points.txt +0 -0
  136. {explorepy-1.8.2 → explorepy-4.2.0}/src/explorepy.egg-info/top_level.txt +0 -0
  137. {explorepy-1.8.2 → explorepy-4.2.0}/tests/README.md +0 -0
  138. {explorepy-1.8.2/src/explorepy/dashboard → explorepy-4.2.0/tests}/__init__.py +0 -0
  139. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/calibration_info +0 -0
  140. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/calibration_info_usbc +0 -0
  141. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/cmd_rcv +0 -0
  142. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/cmd_stat +0 -0
  143. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/device_info +0 -0
  144. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/device_info_v2 +0 -0
  145. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/disconnect +0 -0
  146. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/eeg32 +0 -0
  147. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/eeg94 +0 -0
  148. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/eeg98 +0 -0
  149. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/eeg98_usbc +0 -0
  150. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/eeg98_usbc_2 +0 -0
  151. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/env +0 -0
  152. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/orn +0 -0
  153. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/orn_matrix.txt +0 -0
  154. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/in/push_marker +0 -0
  155. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/axis_and_angle.txt +0 -0
  156. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/calibration_info_out.txt +0 -0
  157. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/calibration_info_usbc_out.txt +0 -0
  158. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/cmd_rcv_out.txt +0 -0
  159. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/cmd_stat_out.txt +0 -0
  160. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/device_info_out.txt +0 -0
  161. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/device_info_v2_out.txt +0 -0
  162. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/disconnect_out.txt +0 -0
  163. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/eeg98_out_fake.txt +0 -0
  164. {explorepy-1.8.2 → explorepy-4.2.0}/tests/res/out/orn_out.txt +0 -0
  165. {explorepy-1.8.2 → explorepy-4.2.0}/tox.ini +0 -0
@@ -1,11 +1,9 @@
1
1
  [bumpversion]
2
- current_version = 1.8.2
2
+ current_version = 4.2.0
3
3
  commit = False
4
4
  tag = False
5
5
 
6
- [bumpversion:file:setup.py]
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}.
@@ -0,0 +1,11 @@
1
+
2
+ Authors
3
+ =======
4
+
5
+
6
+ * Salman Rahman - `salman@mentalab.com <mailto:salman@mentalab.com>`_
7
+ * Andrea Escartin
8
+ * Sonja Stefani - `sonja@mentalab.com <mailto:sonja@mentalab.com>`_
9
+ * Mohamad Atayi
10
+ * Masoome Fazelian
11
+ * Alex Platt
@@ -2,13 +2,73 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ 4.2.0 (15.7.2025)
6
+ ------------------
7
+ * Add ExplorePy and Arduino interfacing example
8
+ * Add fieldtrip integration example
9
+ * Add live exg and impedance acquisition example
10
+ * Update MNE integration
11
+ * Remove deprecated functions
12
+ * Update documentation
13
+
14
+ 4.1.0 (31.3.2025)
15
+ ------------------
16
+ * Improve bluetooth connection UX
17
+ * Add more data in IMU packet
18
+ * Improve USB streaming
19
+
20
+
21
+ 4.0.0 (14.3.2025)
22
+ ------------------
23
+ * Deprecate support for Explore legacy devices
24
+ * Improve binary file conversion and stream parser algorithm
25
+
26
+
27
+ 3.2.1 (31.1.2025)
28
+ ------------------
29
+ * Hotfix impedance calculation
30
+
31
+
32
+ 3.2.0 (31.1.2025)
33
+ ------------------
34
+ * Fix critical bug in settings file modification
35
+ * Improve BT communication
36
+ * Disable impedance on fresh connection
37
+ * Introduce new sampling rates
38
+
39
+
40
+ 3.1.0 (8.11.2024)
41
+ ------------------
42
+ * Add USB streaming support
43
+ * Improve BT communication
44
+
45
+
46
+ 3.0.1 (28.08.2024)
47
+ ------------------
48
+ * Improve device connectivity
49
+ * Add text marker support
50
+
51
+
52
+ 3.0.0 (7.6.2024)
53
+ ------------------
54
+ * Improve Mac OSX support
55
+ * Add Support for Explore Pro
56
+ * Robust data parsing
57
+
58
+
59
+ 2.0.0 (5.1.2024)
60
+ ------------------
61
+ * Add Mac OSX support
62
+ * Remove browser based visualization support
63
+ * Update build script for docs
64
+
65
+
5
66
  1.8.2 (28.8.2023)
6
67
  ------------------
7
68
  * Improve explore mock device
8
69
  * Add yaml file for RTD build
9
70
 
10
71
 
11
-
12
72
  1.8.1 (11.7.2023)
13
73
  ------------------
14
74
  * Bugfix record data
@@ -27,7 +87,7 @@ Changelog
27
87
 
28
88
  1.7.0 (21.12.2022)
29
89
  ------------------
30
- * Add suppport for new explore+ 32 ch device
90
+ * Add support for new explore+ 32 ch device
31
91
  * Sorted timestamps in CSV
32
92
  * Settings file to preserve experiment settings
33
93
 
@@ -17,4 +17,4 @@ recursive-include lib *
17
17
 
18
18
  include tox.ini
19
19
 
20
- global-exclude *.py[cod] __pycache__ *.dylib
20
+ global-exclude *.py[co] __pycache__ *.dylib
@@ -0,0 +1,193 @@
1
+ Metadata-Version: 2.4
2
+ Name: explorepy
3
+ Version: 4.2.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:: https://raw.githubusercontent.com/Mentalab-hub/explorepy/master/docs/logo.jpg
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.2.0.svg
66
+ :alt: Commits since latest release
67
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.2.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
+ =========================
87
+ ``explorepy`` overview
88
+ =========================
89
+
90
+ ``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:
91
+
92
+ * Real-time streaming 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
+
99
+ Requirements
100
+ ------------
101
+
102
+ * Python 3.10 to Python 3.12.
103
+ * Visual Studio 2015 community edition (Windows only. For package building).
104
+ * Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
105
+
106
+
107
+ Detailed installation instructions can be found on the `installation page <https://explorepy.readthedocs.io/en/latest/installation.html>`_.
108
+
109
+ To install ``explorepy`` from PyPI run:
110
+ ::
111
+
112
+ pip install explorepy
113
+
114
+
115
+ To install the latest development version (git must be installed before running this command):
116
+ ::
117
+
118
+ pip install git+https://github.com/Mentalab-hub/explorepy.git@develop
119
+
120
+
121
+ Get started
122
+ ===========
123
+
124
+ CLI command
125
+ -----------
126
+ To check ``explorepy`` is running use:
127
+ ::
128
+ explorepy acquire -n Explore_XXXX
129
+
130
+ For help, use:
131
+ ::
132
+ explorepy -h
133
+
134
+
135
+ Python code
136
+ -----------
137
+
138
+ In Python you can connect to the Explore device and print data using:
139
+
140
+ ::
141
+
142
+ import explorepy
143
+ explorer = explorepy.Explore()
144
+ explorer.connect(device_name="Explore_XXXX") # Use correct device ID here
145
+ explorer.acquire()
146
+
147
+ Documentation
148
+ =============
149
+
150
+ For full API documentation, visit: https://explorepy.readthedocs.io/.
151
+
152
+ Troubleshooting
153
+ ===============
154
+ If you are having problems, please check the `troubleshooting <https://explorepy.readthedocs.io/en/latest/installation.html#troubleshooting>`_
155
+ section of the documentation.
156
+
157
+ If you are still having problems, send us your error log via Sentry (note: Explorepy will send the log
158
+ 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:
159
+
160
+ * Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
161
+ * Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
162
+ * Mac OS: ``/Users/<USER_NAME>/Library/Logs/explorepy/explorepy.log``
163
+
164
+ You can also create a new issue in the GitHub repository.
165
+
166
+ Authors
167
+ =======
168
+ - `Mohamad Atayi`_
169
+ - `Salman Rahman`_
170
+ - `Andrea Escartin`_
171
+ - `Sonja Stefani`_
172
+ - `Alex Platt`_
173
+ - `Andreas Gutsche`_
174
+ - `Masoome Fazelian`_
175
+ - `Philipp Jakovleski`_
176
+ - `Florian Sesser`_
177
+ - `Sebastian Herberger`_
178
+
179
+
180
+ .. _Mohamad Atayi: https://github.com/bmeatayi
181
+ .. _Salman Rahman: https://github.com/salman2135
182
+ .. _Andrea Escartin: https://github.com/andrea-escartin
183
+ .. _Sonja Stefani: https://github.com/SonjaSt
184
+ .. _Alex Platt: https://github.com/Nujanauss
185
+ .. _Andreas Gutsche: https://github.com/andyman410
186
+ .. _Masoome Fazelian: https://github.com/fazelian
187
+ .. _Philipp Jakovleski: https://github.com/philippjak
188
+ .. _Florian Sesser : https://github.com/hacklschorsch
189
+ .. _Sebastian Herberger: https://github.com/SHerberger
190
+
191
+ License
192
+ =======
193
+ 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
- .. image:: logo.png
1
+ .. image:: https://raw.githubusercontent.com/Mentalab-hub/explorepy/master/docs/logo.jpg
2
2
  :scale: 100 %
3
- :align: center
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/v1.8.2.svg
20
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.2.0.svg
21
21
  :alt: Commits since latest release
22
- :target: https://github.com/Mentalab-hub/explorepy/compare/v1.8.2...master
22
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.2.0...master
23
23
 
24
24
 
25
25
  .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
@@ -37,6 +37,7 @@
37
37
 
38
38
  .. end-badges
39
39
 
40
+
40
41
  =========================
41
42
  ``explorepy`` overview
42
43
  =========================
@@ -44,23 +45,16 @@
44
45
  ``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:
45
46
 
46
47
  * Real-time streaming of ExG, orientation and environmental data.
47
- * Real-time visualization of ExG, orientation and environmental data.
48
48
  * Data recording in CSV and BDF+ formats.
49
49
  * Integration with LabStreaming Layer.
50
50
  * Electrode impedance measurements.
51
51
  * Explore device configuration.
52
52
 
53
- Quick installation
54
- ==================
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
-
57
- For other operating systems, or to build the package manually on Windows, please refer to the information below. MAC OSX is currently not supported.
58
-
59
53
 
60
54
  Requirements
61
55
  ------------
62
56
 
63
- * Python 3.7 to Python 3.11.
57
+ * Python 3.10 to Python 3.12.
64
58
  * Visual Studio 2015 community edition (Windows only. For package building).
65
59
  * Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
66
60
 
@@ -76,7 +70,7 @@ To install ``explorepy`` from PyPI run:
76
70
  To install the latest development version (git must be installed before running this command):
77
71
  ::
78
72
 
79
- pip install git+https://github.com/Mentalab-hub/explorepy
73
+ pip install git+https://github.com/Mentalab-hub/explorepy.git@develop
80
74
 
81
75
 
82
76
  Get started
@@ -102,17 +96,9 @@ In Python you can connect to the Explore device and print data using:
102
96
 
103
97
  import explorepy
104
98
  explorer = explorepy.Explore()
105
- explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
99
+ explorer.connect(device_name="Explore_XXXX") # Use correct device ID here
106
100
  explorer.acquire()
107
101
 
108
- You can also visualize the data in real-time.
109
-
110
- ::
111
-
112
- import explorepy
113
- explorer = explorepy.Explore()
114
- explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
115
-
116
102
  Documentation
117
103
  =============
118
104
 
@@ -124,7 +110,7 @@ If you are having problems, please check the `troubleshooting <https://explorepy
124
110
  section of the documentation.
125
111
 
126
112
  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 contact@mentalab.com. The log file is usually found under:
113
+ 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
114
 
129
115
  * Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
130
116
  * Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
@@ -140,7 +126,7 @@ Authors
140
126
  - `Sonja Stefani`_
141
127
  - `Alex Platt`_
142
128
  - `Andreas Gutsche`_
143
- - `Masooma Fazelian`_
129
+ - `Masoome Fazelian`_
144
130
  - `Philipp Jakovleski`_
145
131
  - `Florian Sesser`_
146
132
  - `Sebastian Herberger`_
@@ -152,7 +138,7 @@ Authors
152
138
  .. _Sonja Stefani: https://github.com/SonjaSt
153
139
  .. _Alex Platt: https://github.com/Nujanauss
154
140
  .. _Andreas Gutsche: https://github.com/andyman410
155
- .. _Masooma Fazelian: https://github.com/fazelian
141
+ .. _Masoome Fazelian: https://github.com/fazelian
156
142
  .. _Philipp Jakovleski: https://github.com/philippjak
157
143
  .. _Florian Sesser : https://github.com/hacklschorsch
158
144
  .. _Sebastian Herberger: https://github.com/SHerberger
@@ -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-2022'
28
+ year = '2018-2025'
30
29
  author = 'Mentalab GmbH.'
31
30
  copyright = '{0}, {1}'.format(year, author)
32
- version = release = '1.8.2'
33
-
31
+ version = release = '4.2.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
- if not on_rtd: # only set the theme if we're building docs locally
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.
@@ -12,6 +12,7 @@ Contents
12
12
  contributing
13
13
  authors
14
14
  changelog
15
+ explore_legacy_devices
15
16
 
16
17
  Indices and tables
17
18
  ==================
@@ -0,0 +1,140 @@
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
+ Installing from Python Package Index (PyPI)
23
+ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
24
+
25
+ .. note::
26
+ For Windows, Mac and Linux the standalone desktop software ExploreDesktop can be installed using the installer files uploaded to the
27
+ `release page <https://github.com/Mentalab-hub/explore-desktop-release/releases/latest/>`_.
28
+
29
+ .. note::
30
+
31
+ Explore legacy device support is **deprecated** in ExplorePy. See the documentation on :doc:`explore_legacy_devices`.
32
+
33
+
34
+ *To install explorepy for any Python version below 3.10, please contact support@mentalab.com*
35
+
36
+ *This option is best for users who intend to include* ``explorepy`` *functionalities in their own Python scripts or use it from the command line.*
37
+
38
+ For an overview of ``explorepy`` commands, click `here <https://explorepy.readthedocs.io/en/latest/usage.html#command-line-interface>`_.
39
+
40
+ Windows
41
+ ^^^^^^^
42
+
43
+ To install the ``explorepy`` API and all its dependencies using pip on Windows:
44
+
45
+ 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>`_.
46
+ 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.
47
+ 3. Open the Anaconda command prompt.
48
+ 4. We recommend using a conda environment. To do this:
49
+
50
+ a. In the Anaconda command prompt: ``conda create -n myenv python=3.12``
51
+ b. Activate the conda environment: ``conda activate myenv``
52
+
53
+ 5. Upgrade your pip: ``python -m pip install --upgrade pip``
54
+ 6. Install liblsl: ``conda install -c conda-forge liblsl``
55
+ 7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
56
+
57
+ Ubuntu
58
+ ^^^^^^
59
+ 1. From the terminal, run these commands one by one: ``sudo apt-get install libbluetooth-dev`` and ``sudo apt-get install build-essential``.
60
+ 2. We recommend installing Anaconda. Download and installer `Anaconda<https://www.anaconda.com/download>`/Miniconda/.
61
+ 3. We recommend using a virtual environment in Conda. 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
+ 4. Upgrade your pip: ``python -m pip install --upgrade pip``
67
+ 5. Install liblsl: ``conda install -c conda-forge liblsl``
68
+ 6. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
69
+ 7. From the terminal, run: ``sudo apt install libxcb-cursor0``
70
+
71
+ Set up USB streaming in Linux
72
+ +++++++++++++++++++++++++++++
73
+
74
+ a. Set up ``udev`` rules for appropiate permission to ``/dev/ttyACM*`` in Linux
75
+
76
+ *Steps to Execute the Udev Script Manually*
77
+
78
+ 1. Create a file named ``setup_udev_rule.sh`` and include the following script
79
+
80
+ ::
81
+
82
+ #!/bin/bash
83
+
84
+ RULE='SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", SYMLINK+="stm_virtual_com", MODE="0666"'
85
+
86
+ echo "Creating udev rule..."
87
+ echo "$RULE" | sudo tee /etc/udev/rules.d/99-stm-virtual-com.rules > /dev/null
88
+
89
+ sudo udevadm control --reload-rules && sudo udevadm trigger
90
+ echo "udev rule has been created successfully!"
91
+ echo "You can access your device at /dev/$SYMLINK_NAME when it is connected."
92
+
93
+ 2. Make the ``setup_udev_rule.sh`` executable ::
94
+
95
+ chmod +x setup_udev_rule.sh
96
+
97
+ 3. Execute the script ::
98
+
99
+ ./setup_udev_rule.sh
100
+
101
+ *To remove the udev rule when no longer required* ::
102
+
103
+ sudo rm /etc/udev/rules.d/99-stm-virtual-com.rules
104
+
105
+
106
+ b. Alternate method: Temporarily granting appropriate permissions to ``/dev/ttyACM*``
107
+
108
+
109
+ 1. Identify the device (ttyACM0, ttyACM1, ttyACM2, etc) in ``/dev`` directory
110
+
111
+
112
+ 2. Execute this command in the terminal (replace * with appropiate id) ::
113
+
114
+ chmod 666 /dev/ttyACM*
115
+
116
+ Mac
117
+ ^^^
118
+ 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/>`_.
119
+ 2. Accept the license agreement: ``sudo xcodebuild -license``.
120
+ 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>`_.
121
+ 4. We recommend using a conda environment.
122
+
123
+ a. In the Anaconda command prompt: ``conda create -n myenv python=3.10``
124
+ b. Activate the conda environment: ``conda activate myenv``
125
+
126
+ 5. Upgrade your pip: ``python -m pip install --upgrade pip``
127
+ 6. Install liblsl: ``conda install -c conda-forge liblsl``
128
+ 7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
129
+ 8. Connect your Explore device from the Bluetooth menu and run your Python script.
130
+
131
+
132
+ Quick test
133
+ ----------
134
+
135
+ *Note: If you installed the graphical user interface ExploreDesktop as outlined above, explorepy won't be available from the command line.*
136
+
137
+ * Open the Anaconda command prompt.
138
+ * Activate the virtual environment that you made before installing explorepy: ``conda activate myenv``
139
+ * Run ``explorepy acquire -n DEVICE-NAME``
140
+ * To stop the command execution, press ``Ctrl+C``
Binary file
@@ -27,11 +27,6 @@ Parser
27
27
  :members:
28
28
  :undoc-members:
29
29
 
30
- Dashboard
31
- *********
32
- .. autoclass:: dashboard.dashboard.Dashboard
33
- :members:
34
-
35
30
 
36
31
  Additional tools
37
32
  ****************
@@ -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
- sentry_sdk==1.19.1
14
- tornado==6.3.2
11
+ tornado==6.5.1
12
+ sentry_sdk==2.8.0
13
+ sphinx-rtd-theme==1.3.0
14
+ sphinx==7.2.4